Full Code of 71yuu/YMall for AI

master 73787a3f021b cached
928 files
10.1 MB
2.7M tokens
2607 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,063K chars total). Download the full file to get everything.
Repository: 71yuu/YMall
Branch: master
Commit: 73787a3f021b
Files: 928
Total size: 10.1 MB

Directory structure:
gitextract_igooiayh/

├── .gitattributes
├── .gitignore
├── README.md
├── pom.xml
├── sql/
│   └── ymall.sql
├── ymall-commons/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com.yuu.ymall.commons/
│                   ├── consts/
│                   │   └── Consts.java
│                   ├── dto/
│                   │   └── BaseResult.java
│                   ├── execption/
│                   │   └── YmallUploadException.java
│                   ├── geetest/
│                   │   ├── GeetInit.java
│                   │   └── GeetestLib.java
│                   ├── persistence/
│                   │   └── BaseMapper.java
│                   ├── redis/
│                   │   └── RedisCacheManager.java
│                   └── utils/
│                       ├── EsUtil.java
│                       ├── HttpUtil.java
│                       ├── IDUtil.java
│                       ├── MapperUtil.java
│                       ├── SendSmsUtil.java
│                       └── TimeUtil.java
├── ymall-dependencies/
│   ├── libs/
│   │   └── alipay-trade-sdk-20161215.jar
│   └── pom.xml
├── ymall-domain/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── yuu/
│                       └── ymall/
│                           └── domain/
│                               ├── TbAddress.java
│                               ├── TbExpress.java
│                               ├── TbItem.java
│                               ├── TbItemCat.java
│                               ├── TbItemDesc.java
│                               ├── TbMember.java
│                               ├── TbOrder.java
│                               ├── TbOrderItem.java
│                               ├── TbOrderShipping.java
│                               ├── TbPanel.java
│                               ├── TbPanelContent.java
│                               └── TbUser.java
├── ymall-web-admin/
│   ├── .rebel.xml.bak
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── yuu/
│           │           └── ymall/
│           │               └── web/
│           │                   └── admin/
│           │                       ├── commons/
│           │                       │   ├── consts/
│           │                       │   │   └── Consts.java
│           │                       │   ├── dto/
│           │                       │   │   ├── ChartData.java
│           │                       │   │   ├── City.java
│           │                       │   │   ├── DataTablesResult.java
│           │                       │   │   ├── IpWeatherResult.java
│           │                       │   │   ├── ItemDto.java
│           │                       │   │   ├── OrderChartData.java
│           │                       │   │   ├── OrderDetail.java
│           │                       │   │   └── ZTreeNode.java
│           │                       │   ├── es/
│           │                       │   │   └── ESItem.java
│           │                       │   ├── shiro/
│           │                       │   │   └── MyRealm.java
│           │                       │   ├── swagger/
│           │                       │   │   └── SwaggerConfiguration.java
│           │                       │   └── utils/
│           │                       │       ├── DtoUtil.java
│           │                       │       ├── IDUtil.java
│           │                       │       ├── IPInfoUtil.java
│           │                       │       ├── ObjectUtil.java
│           │                       │       ├── QiniuUtil.java
│           │                       │       └── ThreadPoolUtil.java
│           │                       ├── mapper/
│           │                       │   ├── TbAddressMapper.java
│           │                       │   ├── TbExpressMapper.java
│           │                       │   ├── TbItemCatMapper.java
│           │                       │   ├── TbItemDescMapper.java
│           │                       │   ├── TbItemMapper.java
│           │                       │   ├── TbMemberMapper.java
│           │                       │   ├── TbOrderItemMapper.java
│           │                       │   ├── TbOrderMapper.java
│           │                       │   ├── TbOrderShippingMapper.java
│           │                       │   ├── TbPanelContentMapper.java
│           │                       │   ├── TbPanelMapper.java
│           │                       │   └── TbUserMapper.java
│           │                       ├── repositories/
│           │                       │   └── ItemRepository.java
│           │                       ├── service/
│           │                       │   ├── ContentService.java
│           │                       │   ├── CountService.java
│           │                       │   ├── ExpressService.java
│           │                       │   ├── ItemCatService.java
│           │                       │   ├── ItemService.java
│           │                       │   ├── MemberService.java
│           │                       │   ├── OrderService.java
│           │                       │   ├── PanelService.java
│           │                       │   ├── SearchService.java
│           │                       │   ├── SystemService.java
│           │                       │   ├── UserService.java
│           │                       │   └── impl/
│           │                       │       ├── ContentServiceImpl.java
│           │                       │       ├── CountServiceImpl.java
│           │                       │       ├── ExpressServiceImpl.java
│           │                       │       ├── ItemCatServiceImpl.java
│           │                       │       ├── ItemServiceImpl.java
│           │                       │       ├── MemberServiceImpl.java
│           │                       │       ├── OrderServiceImpl.java
│           │                       │       ├── PanelServiceImpl.java
│           │                       │       ├── SearchServiceImpl.java
│           │                       │       ├── SystemServiceImpl.java
│           │                       │       └── UserServiceImpl.java
│           │                       └── web/
│           │                           ├── controller/
│           │                           │   ├── ContentController.java
│           │                           │   ├── CountController.java
│           │                           │   ├── ExpressController.java
│           │                           │   ├── ItemCatController.java
│           │                           │   ├── ItemController.java
│           │                           │   ├── MemberController.java
│           │                           │   ├── OrderController.java
│           │                           │   ├── PageController.java
│           │                           │   ├── PanelController.java
│           │                           │   ├── SwaggerController.java
│           │                           │   ├── SystemController.java
│           │                           │   ├── UploadController.java
│           │                           │   └── UserController.java
│           │                           └── interceptor/
│           │                               └── PermissionInterceptor.java
│           ├── resources/
│           │   ├── generatorConfig.xml
│           │   ├── log4j.properties
│           │   ├── mapper/
│           │   │   ├── TbAddressMapper.xml
│           │   │   ├── TbExpressMapper.xml
│           │   │   ├── TbItemCatMapper.xml
│           │   │   ├── TbItemDescMapper.xml
│           │   │   ├── TbItemMapper.xml
│           │   │   ├── TbMemberMapper.xml
│           │   │   ├── TbOrderItemMapper.xml
│           │   │   ├── TbOrderMapper.xml
│           │   │   ├── TbOrderShippingMapper.xml
│           │   │   ├── TbPanelContentMapper.xml
│           │   │   ├── TbPanelMapper.xml
│           │   │   └── TbUserMapper.xml
│           │   ├── mybatis-config.xml
│           │   ├── resource.properties
│           │   ├── spring-context-druid.xml
│           │   ├── spring-context-elasticsearch.xml
│           │   ├── spring-context-mybatis.xml
│           │   ├── spring-context-redis.xml
│           │   ├── spring-context-shiro.xml
│           │   ├── spring-context.xml
│           │   ├── spring-mvc.xml
│           │   └── ymall.properties
│           └── webapp/
│               ├── WEB-INF/
│               │   ├── includes/
│               │   │   ├── footer.jsp
│               │   │   └── header.jsp
│               │   ├── views/
│               │   │   ├── admin-form.jsp
│               │   │   ├── admin-list.jsp
│               │   │   ├── change-admin-password.jsp
│               │   │   ├── change-password.jsp
│               │   │   ├── chart-order.jsp
│               │   │   ├── choose-category.jsp
│               │   │   ├── choose-parent-category.jsp
│               │   │   ├── choose-product.jsp
│               │   │   ├── content-common-form.jsp
│               │   │   ├── content-common-list.jsp
│               │   │   ├── content-header-list.jsp
│               │   │   ├── content-panel-add.jsp
│               │   │   ├── content-panel.jsp
│               │   │   ├── index.jsp
│               │   │   ├── lock-screen.jsp
│               │   │   ├── login.jsp
│               │   │   ├── member-ban.jsp
│               │   │   ├── member-form.jsp
│               │   │   ├── member-list.jsp
│               │   │   ├── order-deliver.jsp
│               │   │   ├── order-list.jsp
│               │   │   ├── order-print.jsp
│               │   │   ├── product-category-add.jsp
│               │   │   ├── product-category.jsp
│               │   │   ├── product-form.jsp
│               │   │   ├── product-list.jsp
│               │   │   ├── system-express-form.jsp
│               │   │   ├── system-express.jsp
│               │   │   └── welcome.jsp
│               │   └── web.xml
│               └── static/
│                   └── assets/
│                       ├── app/
│                       │   ├── app.js
│                       │   ├── common.js
│                       │   ├── const.js
│                       │   └── validate.js
│                       ├── lib/
│                       │   ├── DD_belatedPNG_0.0.8a-min.js
│                       │   ├── Hui-iconfont/
│                       │   │   └── 1.0.8/
│                       │   │       ├── demo.html
│                       │   │       └── iconfont.css
│                       │   ├── My97DatePicker/
│                       │   │   └── 4.8/
│                       │   │       ├── WdatePicker.js
│                       │   │       ├── calendar.js
│                       │   │       ├── lang/
│                       │   │       │   ├── en.js
│                       │   │       │   ├── zh-cn.js
│                       │   │       │   └── zh-tw.js
│                       │   │       └── skin/
│                       │   │           ├── WdatePicker.css
│                       │   │           ├── default/
│                       │   │           │   └── datepicker.css
│                       │   │           ├── twoer/
│                       │   │           │   ├── datepicker-dev.css
│                       │   │           │   └── datepicker.css
│                       │   │           └── whyGreen/
│                       │   │               └── datepicker.css
│                       │   ├── busuanzi.pure.mini.js
│                       │   ├── changyan.js
│                       │   ├── datatables/
│                       │   │   └── Chinese.json
│                       │   ├── expressInstall.swf
│                       │   ├── flatlab/
│                       │   │   ├── assets/
│                       │   │   │   ├── font-awesome/
│                       │   │   │   │   ├── css/
│                       │   │   │   │   │   ├── font-awesome-ie7.css
│                       │   │   │   │   │   └── font-awesome.css
│                       │   │   │   │   ├── font/
│                       │   │   │   │   │   └── FontAwesome.otf
│                       │   │   │   │   ├── less/
│                       │   │   │   │   │   ├── bootstrap.less
│                       │   │   │   │   │   ├── core.less
│                       │   │   │   │   │   ├── extras.less
│                       │   │   │   │   │   ├── font-awesome-ie7.less
│                       │   │   │   │   │   ├── font-awesome.less
│                       │   │   │   │   │   ├── icons.less
│                       │   │   │   │   │   ├── mixins.less
│                       │   │   │   │   │   ├── path.less
│                       │   │   │   │   │   └── variables.less
│                       │   │   │   │   └── scss/
│                       │   │   │   │       ├── _bootstrap.scss
│                       │   │   │   │       ├── _core.scss
│                       │   │   │   │       ├── _extras.scss
│                       │   │   │   │       ├── _icons.scss
│                       │   │   │   │       ├── _mixins.scss
│                       │   │   │   │       ├── _path.scss
│                       │   │   │   │       ├── _variables.scss
│                       │   │   │   │       ├── font-awesome-ie7.scss
│                       │   │   │   │       └── font-awesome.scss
│                       │   │   │   └── jquery-easy-pie-chart/
│                       │   │   │       ├── Makefile
│                       │   │   │       ├── Readme.md
│                       │   │   │       ├── examples/
│                       │   │   │       │   ├── excanvas.js
│                       │   │   │       │   ├── index.html
│                       │   │   │       │   └── style.css
│                       │   │   │       ├── jquery.easy-pie-chart.coffee
│                       │   │   │       ├── jquery.easy-pie-chart.css
│                       │   │   │       └── jquery.easy-pie-chart.js
│                       │   │   ├── css/
│                       │   │   │   ├── bootstrap-reset.css
│                       │   │   │   ├── bootstrap.css
│                       │   │   │   ├── owl.carousel.css
│                       │   │   │   ├── style-responsive.css
│                       │   │   │   └── style.css
│                       │   │   └── js/
│                       │   │       ├── bootstrap.js
│                       │   │       ├── common-scripts.js
│                       │   │       ├── count.js
│                       │   │       ├── easy-pie-chart.js
│                       │   │       ├── html5shiv.js
│                       │   │       ├── jquery.dcjqaccordion.2.7.js
│                       │   │       ├── jquery.js
│                       │   │       ├── jquery.nicescroll.js
│                       │   │       ├── jquery.sparkline.js
│                       │   │       ├── owl.carousel.js
│                       │   │       └── sparkline-chart.js
│                       │   ├── fonts/
│                       │   │   └── FontAwesome.otf
│                       │   ├── gt.js
│                       │   ├── html5shiv.js
│                       │   ├── jQuery.print.js
│                       │   ├── jquery/
│                       │   │   └── 1.9.1/
│                       │   │       └── jquery.js
│                       │   ├── jquery.contextmenu/
│                       │   │   └── jquery.contextmenu.r2.js
│                       │   ├── jquery.validation/
│                       │   │   └── 1.14.0/
│                       │   │       ├── additional-methods.js
│                       │   │       ├── jquery.validate.js
│                       │   │       ├── messages_zh.js
│                       │   │       └── validate-methods.js
│                       │   ├── jselect-1.0.js
│                       │   ├── kindeditor/
│                       │   │   ├── kindeditor.js
│                       │   │   ├── lang/
│                       │   │   │   ├── ar.js
│                       │   │   │   ├── en.js
│                       │   │   │   ├── ko.js
│                       │   │   │   ├── ru.js
│                       │   │   │   ├── zh-CN.js
│                       │   │   │   └── zh-TW.js
│                       │   │   ├── plugins/
│                       │   │   │   ├── anchor/
│                       │   │   │   │   └── anchor.js
│                       │   │   │   ├── autoheight/
│                       │   │   │   │   └── autoheight.js
│                       │   │   │   ├── baidumap/
│                       │   │   │   │   ├── baidumap.js
│                       │   │   │   │   ├── index.html
│                       │   │   │   │   └── map.html
│                       │   │   │   ├── clearhtml/
│                       │   │   │   │   └── clearhtml.js
│                       │   │   │   ├── code/
│                       │   │   │   │   ├── code.js
│                       │   │   │   │   ├── prettify.css
│                       │   │   │   │   └── prettify.js
│                       │   │   │   ├── emoticons/
│                       │   │   │   │   └── emoticons.js
│                       │   │   │   ├── filemanager/
│                       │   │   │   │   └── filemanager.js
│                       │   │   │   ├── fixtoolbar/
│                       │   │   │   │   └── fixtoolbar.js
│                       │   │   │   ├── flash/
│                       │   │   │   │   └── flash.js
│                       │   │   │   ├── image/
│                       │   │   │   │   └── image.js
│                       │   │   │   ├── insertfile/
│                       │   │   │   │   └── insertfile.js
│                       │   │   │   ├── lineheight/
│                       │   │   │   │   └── lineheight.js
│                       │   │   │   ├── link/
│                       │   │   │   │   └── link.js
│                       │   │   │   ├── map/
│                       │   │   │   │   ├── map.html
│                       │   │   │   │   └── map.js
│                       │   │   │   ├── media/
│                       │   │   │   │   └── media.js
│                       │   │   │   ├── multiimage/
│                       │   │   │   │   ├── images/
│                       │   │   │   │   │   └── swfupload.swf
│                       │   │   │   │   └── multiimage.js
│                       │   │   │   ├── pagebreak/
│                       │   │   │   │   └── pagebreak.js
│                       │   │   │   ├── plainpaste/
│                       │   │   │   │   └── plainpaste.js
│                       │   │   │   ├── preview/
│                       │   │   │   │   └── preview.js
│                       │   │   │   ├── quickformat/
│                       │   │   │   │   └── quickformat.js
│                       │   │   │   ├── table/
│                       │   │   │   │   └── table.js
│                       │   │   │   ├── template/
│                       │   │   │   │   ├── html/
│                       │   │   │   │   │   ├── 1.html
│                       │   │   │   │   │   ├── 2.html
│                       │   │   │   │   │   └── 3.html
│                       │   │   │   │   └── template.js
│                       │   │   │   └── wordpaste/
│                       │   │   │       └── wordpaste.js
│                       │   │   └── themes/
│                       │   │       ├── default/
│                       │   │       │   └── default.css
│                       │   │       ├── qq/
│                       │   │       │   └── qq.css
│                       │   │       └── simple/
│                       │   │           └── simple.css
│                       │   ├── layer/
│                       │   │   └── 2.4/
│                       │   │       ├── layer.js
│                       │   │       └── skin/
│                       │   │           └── layer.css
│                       │   ├── laypage/
│                       │   │   └── 1.2/
│                       │   │       ├── laypage.js
│                       │   │       └── skin/
│                       │   │           └── laypage.css
│                       │   ├── lightbox2/
│                       │   │   └── 2.8.1/
│                       │   │       ├── css/
│                       │   │       │   └── lightbox.css
│                       │   │       ├── examples.html
│                       │   │       └── js/
│                       │   │           ├── lightbox-plus-jquery.js
│                       │   │           └── lightbox.js
│                       │   ├── login/
│                       │   │   ├── font-awesome.css
│                       │   │   └── style.css
│                       │   ├── nprogress/
│                       │   │   └── 0.2.0/
│                       │   │       ├── nprogress.css
│                       │   │       └── nprogress.js
│                       │   ├── province/
│                       │   │   ├── distpicker.data.js
│                       │   │   └── distpicker.js
│                       │   ├── squid.js
│                       │   ├── swfobject.js
│                       │   ├── webuploader/
│                       │   │   └── 0.1.5/
│                       │   │       ├── README.md
│                       │   │       ├── Uploader.swf
│                       │   │       ├── cropper/
│                       │   │       │   ├── cropper.js
│                       │   │       │   ├── index.html
│                       │   │       │   └── uploader.js
│                       │   │       ├── expressInstall.swf
│                       │   │       ├── image-upload/
│                       │   │       │   ├── index.html
│                       │   │       │   └── upload.js
│                       │   │       ├── images/
│                       │   │       │   ├── icons.psd
│                       │   │       │   └── progress.psd
│                       │   │       ├── md5-demo/
│                       │   │       │   ├── index.html
│                       │   │       │   └── script.js
│                       │   │       ├── requirejs/
│                       │   │       │   ├── app.js
│                       │   │       │   ├── index.html
│                       │   │       │   └── require.js
│                       │   │       ├── server/
│                       │   │       │   ├── crossdomain.xml
│                       │   │       │   ├── fileupload.php
│                       │   │       │   ├── fileupload2.php
│                       │   │       │   └── preview.php
│                       │   │       ├── webuploader.css
│                       │   │       ├── webuploader.custom.js
│                       │   │       ├── webuploader.fis.js
│                       │   │       ├── webuploader.flashonly.js
│                       │   │       ├── webuploader.html5only.js
│                       │   │       ├── webuploader.js
│                       │   │       ├── webuploader.noimage.js
│                       │   │       ├── webuploader.nolog.js
│                       │   │       └── webuploader.withoutimage.js
│                       │   └── zTree/
│                       │       └── v3/
│                       │           ├── api/
│                       │           │   ├── API_cn.html
│                       │           │   ├── API_en.html
│                       │           │   ├── apiCss/
│                       │           │   │   ├── api.js
│                       │           │   │   ├── common.css
│                       │           │   │   ├── common_ie6.css
│                       │           │   │   ├── jquery.ztree.core-3.5.js
│                       │           │   │   └── zTreeStyleForApi.css
│                       │           │   ├── cn/
│                       │           │   │   ├── fn.zTree._z.html
│                       │           │   │   ├── fn.zTree.destroy.html
│                       │           │   │   ├── fn.zTree.getZTreeObj.html
│                       │           │   │   ├── fn.zTree.init.html
│                       │           │   │   ├── setting.async.autoParam.html
│                       │           │   │   ├── setting.async.contentType.html
│                       │           │   │   ├── setting.async.dataFilter.html
│                       │           │   │   ├── setting.async.dataType.html
│                       │           │   │   ├── setting.async.enable.html
│                       │           │   │   ├── setting.async.otherParam.html
│                       │           │   │   ├── setting.async.type.html
│                       │           │   │   ├── setting.async.url.html
│                       │           │   │   ├── setting.callback.beforeAsync.html
│                       │           │   │   ├── setting.callback.beforeCheck.html
│                       │           │   │   ├── setting.callback.beforeClick.html
│                       │           │   │   ├── setting.callback.beforeCollapse.html
│                       │           │   │   ├── setting.callback.beforeDblClick.html
│                       │           │   │   ├── setting.callback.beforeDrag.html
│                       │           │   │   ├── setting.callback.beforeDragOpen.html
│                       │           │   │   ├── setting.callback.beforeDrop.html
│                       │           │   │   ├── setting.callback.beforeEditName.html
│                       │           │   │   ├── setting.callback.beforeExpand.html
│                       │           │   │   ├── setting.callback.beforeMouseDown.html
│                       │           │   │   ├── setting.callback.beforeMouseUp.html
│                       │           │   │   ├── setting.callback.beforeRemove.html
│                       │           │   │   ├── setting.callback.beforeRename.html
│                       │           │   │   ├── setting.callback.beforeRightClick.html
│                       │           │   │   ├── setting.callback.onAsyncError.html
│                       │           │   │   ├── setting.callback.onAsyncSuccess.html
│                       │           │   │   ├── setting.callback.onCheck.html
│                       │           │   │   ├── setting.callback.onClick.html
│                       │           │   │   ├── setting.callback.onCollapse.html
│                       │           │   │   ├── setting.callback.onDblClick.html
│                       │           │   │   ├── setting.callback.onDrag.html
│                       │           │   │   ├── setting.callback.onDragMove.html
│                       │           │   │   ├── setting.callback.onDrop.html
│                       │           │   │   ├── setting.callback.onExpand.html
│                       │           │   │   ├── setting.callback.onMouseDown.html
│                       │           │   │   ├── setting.callback.onMouseUp.html
│                       │           │   │   ├── setting.callback.onNodeCreated.html
│                       │           │   │   ├── setting.callback.onRemove.html
│                       │           │   │   ├── setting.callback.onRename.html
│                       │           │   │   ├── setting.callback.onRightClick.html
│                       │           │   │   ├── setting.check.autoCheckTrigger.html
│                       │           │   │   ├── setting.check.chkDisabledInherit.html
│                       │           │   │   ├── setting.check.chkStyle.html
│                       │           │   │   ├── setting.check.chkboxType.html
│                       │           │   │   ├── setting.check.enable.html
│                       │           │   │   ├── setting.check.nocheckInherit.html
│                       │           │   │   ├── setting.check.radioType.html
│                       │           │   │   ├── setting.data.keep.leaf.html
│                       │           │   │   ├── setting.data.keep.parent.html
│                       │           │   │   ├── setting.data.key.checked.html
│                       │           │   │   ├── setting.data.key.children.html
│                       │           │   │   ├── setting.data.key.name.html
│                       │           │   │   ├── setting.data.key.title.html
│                       │           │   │   ├── setting.data.key.url.html
│                       │           │   │   ├── setting.data.simpleData.enable.html
│                       │           │   │   ├── setting.data.simpleData.idKey.html
│                       │           │   │   ├── setting.data.simpleData.pIdKey.html
│                       │           │   │   ├── setting.data.simpleData.rootPId.html
│                       │           │   │   ├── setting.edit.drag.autoExpandTrigger.html
│                       │           │   │   ├── setting.edit.drag.autoOpenTime.html
│                       │           │   │   ├── setting.edit.drag.borderMax.html
│                       │           │   │   ├── setting.edit.drag.borderMin.html
│                       │           │   │   ├── setting.edit.drag.inner.html
│                       │           │   │   ├── setting.edit.drag.isCopy.html
│                       │           │   │   ├── setting.edit.drag.isMove.html
│                       │           │   │   ├── setting.edit.drag.maxShowNodeNum.html
│                       │           │   │   ├── setting.edit.drag.minMoveSize.html
│                       │           │   │   ├── setting.edit.drag.next.html
│                       │           │   │   ├── setting.edit.drag.prev.html
│                       │           │   │   ├── setting.edit.editNameSelectAll.html
│                       │           │   │   ├── setting.edit.enable.html
│                       │           │   │   ├── setting.edit.removeTitle.html
│                       │           │   │   ├── setting.edit.renameTitle.html
│                       │           │   │   ├── setting.edit.showRemoveBtn.html
│                       │           │   │   ├── setting.edit.showRenameBtn.html
│                       │           │   │   ├── setting.treeId.html
│                       │           │   │   ├── setting.treeObj.html
│                       │           │   │   ├── setting.view.addDiyDom.html
│                       │           │   │   ├── setting.view.addHoverDom.html
│                       │           │   │   ├── setting.view.autoCancelSelected.html
│                       │           │   │   ├── setting.view.dblClickExpand.html
│                       │           │   │   ├── setting.view.expandSpeed.html
│                       │           │   │   ├── setting.view.fontCss.html
│                       │           │   │   ├── setting.view.nameIsHTML.html
│                       │           │   │   ├── setting.view.removeHoverDom.html
│                       │           │   │   ├── setting.view.selectedMulti.html
│                       │           │   │   ├── setting.view.showIcon.html
│                       │           │   │   ├── setting.view.showLine.html
│                       │           │   │   ├── setting.view.showTitle.html
│                       │           │   │   ├── setting.view.txtSelectedEnable.html
│                       │           │   │   ├── treeNode.check_Child_State.html
│                       │           │   │   ├── treeNode.check_Focus.html
│                       │           │   │   ├── treeNode.checked.html
│                       │           │   │   ├── treeNode.checkedOld.html
│                       │           │   │   ├── treeNode.children.html
│                       │           │   │   ├── treeNode.chkDisabled.html
│                       │           │   │   ├── treeNode.click.html
│                       │           │   │   ├── treeNode.diy.html
│                       │           │   │   ├── treeNode.editNameFlag.html
│                       │           │   │   ├── treeNode.getCheckStatus.html
│                       │           │   │   ├── treeNode.getNextNode.html
│                       │           │   │   ├── treeNode.getParentNode.html
│                       │           │   │   ├── treeNode.getPreNode.html
│                       │           │   │   ├── treeNode.halfCheck.html
│                       │           │   │   ├── treeNode.icon.html
│                       │           │   │   ├── treeNode.iconClose.html
│                       │           │   │   ├── treeNode.iconOpen.html
│                       │           │   │   ├── treeNode.iconSkin.html
│                       │           │   │   ├── treeNode.isAjaxing.html
│                       │           │   │   ├── treeNode.isFirstNode.html
│                       │           │   │   ├── treeNode.isHidden.html
│                       │           │   │   ├── treeNode.isHover.html
│                       │           │   │   ├── treeNode.isLastNode.html
│                       │           │   │   ├── treeNode.isParent.html
│                       │           │   │   ├── treeNode.level.html
│                       │           │   │   ├── treeNode.name.html
│                       │           │   │   ├── treeNode.nocheck.html
│                       │           │   │   ├── treeNode.open.html
│                       │           │   │   ├── treeNode.parentTId.html
│                       │           │   │   ├── treeNode.tId.html
│                       │           │   │   ├── treeNode.target.html
│                       │           │   │   ├── treeNode.url.html
│                       │           │   │   ├── treeNode.zAsync.html
│                       │           │   │   ├── zTreeObj.addNodes.html
│                       │           │   │   ├── zTreeObj.cancelEditName.html
│                       │           │   │   ├── zTreeObj.cancelSelectedNode.html
│                       │           │   │   ├── zTreeObj.checkAllNodes.html
│                       │           │   │   ├── zTreeObj.checkNode.html
│                       │           │   │   ├── zTreeObj.copyNode.html
│                       │           │   │   ├── zTreeObj.destroy.html
│                       │           │   │   ├── zTreeObj.editName.html
│                       │           │   │   ├── zTreeObj.expandAll.html
│                       │           │   │   ├── zTreeObj.expandNode.html
│                       │           │   │   ├── zTreeObj.getChangeCheckedNodes.html
│                       │           │   │   ├── zTreeObj.getCheckedNodes.html
│                       │           │   │   ├── zTreeObj.getNodeByParam.html
│                       │           │   │   ├── zTreeObj.getNodeByTId.html
│                       │           │   │   ├── zTreeObj.getNodeIndex.html
│                       │           │   │   ├── zTreeObj.getNodes.html
│                       │           │   │   ├── zTreeObj.getNodesByFilter.html
│                       │           │   │   ├── zTreeObj.getNodesByParam.html
│                       │           │   │   ├── zTreeObj.getNodesByParamFuzzy.html
│                       │           │   │   ├── zTreeObj.getSelectedNodes.html
│                       │           │   │   ├── zTreeObj.hideNode.html
│                       │           │   │   ├── zTreeObj.hideNodes.html
│                       │           │   │   ├── zTreeObj.moveNode.html
│                       │           │   │   ├── zTreeObj.reAsyncChildNodes.html
│                       │           │   │   ├── zTreeObj.refresh.html
│                       │           │   │   ├── zTreeObj.removeChildNodes.html
│                       │           │   │   ├── zTreeObj.removeNode.html
│                       │           │   │   ├── zTreeObj.selectNode.html
│                       │           │   │   ├── zTreeObj.setChkDisabled.html
│                       │           │   │   ├── zTreeObj.setEditable.html
│                       │           │   │   ├── zTreeObj.setting.html
│                       │           │   │   ├── zTreeObj.showNode.html
│                       │           │   │   ├── zTreeObj.showNodes.html
│                       │           │   │   ├── zTreeObj.transformToArray.html
│                       │           │   │   ├── zTreeObj.transformTozTreeNodes.html
│                       │           │   │   └── zTreeObj.updateNode.html
│                       │           │   └── en/
│                       │           │       ├── fn.zTree._z.html
│                       │           │       ├── fn.zTree.destroy.html
│                       │           │       ├── fn.zTree.getZTreeObj.html
│                       │           │       ├── fn.zTree.init.html
│                       │           │       ├── setting.async.autoParam.html
│                       │           │       ├── setting.async.contentType.html
│                       │           │       ├── setting.async.dataFilter.html
│                       │           │       ├── setting.async.dataType.html
│                       │           │       ├── setting.async.enable.html
│                       │           │       ├── setting.async.otherParam.html
│                       │           │       ├── setting.async.type.html
│                       │           │       ├── setting.async.url.html
│                       │           │       ├── setting.callback.beforeAsync.html
│                       │           │       ├── setting.callback.beforeCheck.html
│                       │           │       ├── setting.callback.beforeClick.html
│                       │           │       ├── setting.callback.beforeCollapse.html
│                       │           │       ├── setting.callback.beforeDblClick.html
│                       │           │       ├── setting.callback.beforeDrag.html
│                       │           │       ├── setting.callback.beforeDragOpen.html
│                       │           │       ├── setting.callback.beforeDrop.html
│                       │           │       ├── setting.callback.beforeEditName.html
│                       │           │       ├── setting.callback.beforeExpand.html
│                       │           │       ├── setting.callback.beforeMouseDown.html
│                       │           │       ├── setting.callback.beforeMouseUp.html
│                       │           │       ├── setting.callback.beforeRemove.html
│                       │           │       ├── setting.callback.beforeRename.html
│                       │           │       ├── setting.callback.beforeRightClick.html
│                       │           │       ├── setting.callback.onAsyncError.html
│                       │           │       ├── setting.callback.onAsyncSuccess.html
│                       │           │       ├── setting.callback.onCheck.html
│                       │           │       ├── setting.callback.onClick.html
│                       │           │       ├── setting.callback.onCollapse.html
│                       │           │       ├── setting.callback.onDblClick.html
│                       │           │       ├── setting.callback.onDrag.html
│                       │           │       ├── setting.callback.onDragMove.html
│                       │           │       ├── setting.callback.onDrop.html
│                       │           │       ├── setting.callback.onExpand.html
│                       │           │       ├── setting.callback.onMouseDown.html
│                       │           │       ├── setting.callback.onMouseUp.html
│                       │           │       ├── setting.callback.onNodeCreated.html
│                       │           │       ├── setting.callback.onRemove.html
│                       │           │       ├── setting.callback.onRename.html
│                       │           │       ├── setting.callback.onRightClick.html
│                       │           │       ├── setting.check.autoCheckTrigger.html
│                       │           │       ├── setting.check.chkDisabledInherit.html
│                       │           │       ├── setting.check.chkStyle.html
│                       │           │       ├── setting.check.chkboxType.html
│                       │           │       ├── setting.check.enable.html
│                       │           │       ├── setting.check.nocheckInherit.html
│                       │           │       ├── setting.check.radioType.html
│                       │           │       ├── setting.data.keep.leaf.html
│                       │           │       ├── setting.data.keep.parent.html
│                       │           │       ├── setting.data.key.checked.html
│                       │           │       ├── setting.data.key.children.html
│                       │           │       ├── setting.data.key.name.html
│                       │           │       ├── setting.data.key.title.html
│                       │           │       ├── setting.data.key.url.html
│                       │           │       ├── setting.data.simpleData.enable.html
│                       │           │       ├── setting.data.simpleData.idKey.html
│                       │           │       ├── setting.data.simpleData.pIdKey.html
│                       │           │       ├── setting.data.simpleData.rootPId.html
│                       │           │       ├── setting.edit.drag.autoExpandTrigger.html
│                       │           │       ├── setting.edit.drag.autoOpenTime.html
│                       │           │       ├── setting.edit.drag.borderMax.html
│                       │           │       ├── setting.edit.drag.borderMin.html
│                       │           │       ├── setting.edit.drag.inner.html
│                       │           │       ├── setting.edit.drag.isCopy.html
│                       │           │       ├── setting.edit.drag.isMove.html
│                       │           │       ├── setting.edit.drag.maxShowNodeNum.html
│                       │           │       ├── setting.edit.drag.minMoveSize.html
│                       │           │       ├── setting.edit.drag.next.html
│                       │           │       ├── setting.edit.drag.prev.html
│                       │           │       ├── setting.edit.editNameSelectAll.html
│                       │           │       ├── setting.edit.enable.html
│                       │           │       ├── setting.edit.removeTitle.html
│                       │           │       ├── setting.edit.renameTitle.html
│                       │           │       ├── setting.edit.showRemoveBtn.html
│                       │           │       ├── setting.edit.showRenameBtn.html
│                       │           │       ├── setting.treeId.html
│                       │           │       ├── setting.treeObj.html
│                       │           │       ├── setting.view.addDiyDom.html
│                       │           │       ├── setting.view.addHoverDom.html
│                       │           │       ├── setting.view.autoCancelSelected.html
│                       │           │       ├── setting.view.dblClickExpand.html
│                       │           │       ├── setting.view.expandSpeed.html
│                       │           │       ├── setting.view.fontCss.html
│                       │           │       ├── setting.view.nameIsHTML.html
│                       │           │       ├── setting.view.removeHoverDom.html
│                       │           │       ├── setting.view.selectedMulti.html
│                       │           │       ├── setting.view.showIcon.html
│                       │           │       ├── setting.view.showLine.html
│                       │           │       ├── setting.view.showTitle.html
│                       │           │       ├── setting.view.txtSelectedEnable.html
│                       │           │       ├── treeNode.check_Child_State.html
│                       │           │       ├── treeNode.check_Focus.html
│                       │           │       ├── treeNode.checked.html
│                       │           │       ├── treeNode.checkedOld.html
│                       │           │       ├── treeNode.children.html
│                       │           │       ├── treeNode.chkDisabled.html
│                       │           │       ├── treeNode.click.html
│                       │           │       ├── treeNode.diy.html
│                       │           │       ├── treeNode.editNameFlag.html
│                       │           │       ├── treeNode.getCheckStatus.html
│                       │           │       ├── treeNode.getNextNode.html
│                       │           │       ├── treeNode.getParentNode.html
│                       │           │       ├── treeNode.getPreNode.html
│                       │           │       ├── treeNode.halfCheck.html
│                       │           │       ├── treeNode.icon.html
│                       │           │       ├── treeNode.iconClose.html
│                       │           │       ├── treeNode.iconOpen.html
│                       │           │       ├── treeNode.iconSkin.html
│                       │           │       ├── treeNode.isAjaxing.html
│                       │           │       ├── treeNode.isFirstNode.html
│                       │           │       ├── treeNode.isHidden.html
│                       │           │       ├── treeNode.isHover.html
│                       │           │       ├── treeNode.isLastNode.html
│                       │           │       ├── treeNode.isParent.html
│                       │           │       ├── treeNode.level.html
│                       │           │       ├── treeNode.name.html
│                       │           │       ├── treeNode.nocheck.html
│                       │           │       ├── treeNode.open.html
│                       │           │       ├── treeNode.parentTId.html
│                       │           │       ├── treeNode.tId.html
│                       │           │       ├── treeNode.target.html
│                       │           │       ├── treeNode.url.html
│                       │           │       ├── treeNode.zAsync.html
│                       │           │       ├── zTreeObj.addNodes.html
│                       │           │       ├── zTreeObj.cancelEditName.html
│                       │           │       ├── zTreeObj.cancelSelectedNode.html
│                       │           │       ├── zTreeObj.checkAllNodes.html
│                       │           │       ├── zTreeObj.checkNode.html
│                       │           │       ├── zTreeObj.copyNode.html
│                       │           │       ├── zTreeObj.destroy.html
│                       │           │       ├── zTreeObj.editName.html
│                       │           │       ├── zTreeObj.expandAll.html
│                       │           │       ├── zTreeObj.expandNode.html
│                       │           │       ├── zTreeObj.getChangeCheckedNodes.html
│                       │           │       ├── zTreeObj.getCheckedNodes.html
│                       │           │       ├── zTreeObj.getNodeByParam.html
│                       │           │       ├── zTreeObj.getNodeByTId.html
│                       │           │       ├── zTreeObj.getNodeIndex.html
│                       │           │       ├── zTreeObj.getNodes.html
│                       │           │       ├── zTreeObj.getNodesByFilter.html
│                       │           │       ├── zTreeObj.getNodesByParam.html
│                       │           │       ├── zTreeObj.getNodesByParamFuzzy.html
│                       │           │       ├── zTreeObj.getSelectedNodes.html
│                       │           │       ├── zTreeObj.hideNode.html
│                       │           │       ├── zTreeObj.hideNodes.html
│                       │           │       ├── zTreeObj.moveNode.html
│                       │           │       ├── zTreeObj.reAsyncChildNodes.html
│                       │           │       ├── zTreeObj.refresh.html
│                       │           │       ├── zTreeObj.removeChildNodes.html
│                       │           │       ├── zTreeObj.removeNode.html
│                       │           │       ├── zTreeObj.selectNode.html
│                       │           │       ├── zTreeObj.setChkDisabled.html
│                       │           │       ├── zTreeObj.setEditable.html
│                       │           │       ├── zTreeObj.setting.html
│                       │           │       ├── zTreeObj.showNode.html
│                       │           │       ├── zTreeObj.showNodes.html
│                       │           │       ├── zTreeObj.transformToArray.html
│                       │           │       ├── zTreeObj.transformTozTreeNodes.html
│                       │           │       └── zTreeObj.updateNode.html
│                       │           ├── css/
│                       │           │   ├── metroStyle/
│                       │           │   │   └── metroStyle.css
│                       │           │   └── zTreeStyle/
│                       │           │       └── zTreeStyle.css
│                       │           └── js/
│                       │               ├── jquery.ztree.all-3.5.js
│                       │               ├── jquery.ztree.core-3.5.js
│                       │               ├── jquery.ztree.excheck-3.5.js
│                       │               ├── jquery.ztree.exedit-3.5.js
│                       │               ├── jquery.ztree.exedit.js
│                       │               └── jquery.ztree.exhide-3.5.js
│                       ├── plugins/
│                       │   ├── ajaxfileupload/
│                       │   │   └── ajaxfileupload.js
│                       │   ├── dropzone/
│                       │   │   ├── basic.css
│                       │   │   ├── dropzone-amd-module.js
│                       │   │   ├── dropzone.css
│                       │   │   ├── dropzone.js
│                       │   │   └── readme.md
│                       │   ├── iCheck/
│                       │   │   ├── all.css
│                       │   │   ├── flat/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── flat.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── futurico/
│                       │   │   │   └── futurico.css
│                       │   │   ├── icheck.js
│                       │   │   ├── line/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── line.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── minimal/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── minimal.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── polaris/
│                       │   │   │   └── polaris.css
│                       │   │   └── square/
│                       │   │       ├── _all.css
│                       │   │       ├── aero.css
│                       │   │       ├── blue.css
│                       │   │       ├── green.css
│                       │   │       ├── grey.css
│                       │   │       ├── orange.css
│                       │   │       ├── pink.css
│                       │   │       ├── purple.css
│                       │   │       ├── red.css
│                       │   │       ├── square.css
│                       │   │       └── yellow.css
│                       │   ├── treeTable/
│                       │   │   ├── demo/
│                       │   │   │   ├── style/
│                       │   │   │   │   └── demo.css
│                       │   │   │   └── treeTable.html
│                       │   │   ├── jquery.treeTable.js
│                       │   │   └── themes/
│                       │   │       ├── default/
│                       │   │       │   └── treeTable.css
│                       │   │       └── vsStyle/
│                       │   │           ├── allbgs.psd
│                       │   │           └── treeTable.css
│                       │   └── wangEditor/
│                       │       ├── wangEditor-fullscreen-plugin.css
│                       │       ├── wangEditor-fullscreen-plugin.js
│                       │       ├── wangEditor.css
│                       │       └── wangEditor.js
│                       └── static/
│                           ├── h-ui/
│                           │   ├── css/
│                           │   │   ├── H-ui.css
│                           │   │   ├── H-ui.ie.css
│                           │   │   └── H-ui.reset.css
│                           │   └── js/
│                           │       └── H-ui.js
│                           ├── h-ui.admin/
│                           │   ├── css/
│                           │   │   ├── H-ui.admin.css
│                           │   │   ├── H-ui.login.css
│                           │   │   └── style.css
│                           │   ├── js/
│                           │   │   ├── H-ui.admin.js
│                           │   │   └── de_DE.txt
│                           │   └── skin/
│                           │       ├── black/
│                           │       │   └── skin.css
│                           │       ├── default/
│                           │       │   └── skin.css
│                           │       ├── green/
│                           │       │   └── skin.css
│                           │       ├── orange/
│                           │       │   └── skin.css
│                           │       ├── red/
│                           │       │   └── skin.css
│                           │       └── yellow/
│                           │           └── skin.css
│                           └── swagger/
│                               ├── css/
│                               │   ├── print.css
│                               │   ├── reset.css
│                               │   ├── screen.css
│                               │   ├── style.css
│                               │   └── typography.css
│                               ├── index.html
│                               ├── lang/
│                               │   ├── el.js
│                               │   ├── en.js
│                               │   ├── es.js
│                               │   ├── fr.js
│                               │   ├── geo.js
│                               │   ├── it.js
│                               │   ├── ja.js
│                               │   ├── ko-kr.js
│                               │   ├── pl.js
│                               │   ├── pt.js
│                               │   ├── ru.js
│                               │   ├── tr.js
│                               │   ├── translator.js
│                               │   └── zh-cn.js
│                               ├── lib/
│                               │   ├── backbone-min.js
│                               │   ├── es5-shim.js
│                               │   ├── handlebars-4.0.5.js
│                               │   ├── highlight.9.1.0.pack.js
│                               │   ├── highlight.9.1.0.pack_extended.js
│                               │   ├── marked.js
│                               │   ├── object-assign-pollyfill.js
│                               │   └── swagger-oauth.js
│                               ├── o2c.html
│                               └── swagger-ui.js
├── ymall-web-api/
│   ├── pom.xml
│   ├── src/
│   │   └── main/
│   │       ├── java/
│   │       │   └── com/
│   │       │       └── yuu/
│   │       │           └── ymall/
│   │       │               └── web/
│   │       │                   └── api/
│   │       │                       ├── common/
│   │       │                       │   ├── config/
│   │       │                       │   │   ├── AlipayConfig.java
│   │       │                       │   │   ├── SwaggerConfiguration.java
│   │       │                       │   │   └── ThymeleafConfig.java
│   │       │                       │   └── utils/
│   │       │                       │       ├── EmailUtil.java
│   │       │                       │       ├── IPInfoUtil.java
│   │       │                       │       ├── ObjectUtil.java
│   │       │                       │       └── QiniuUtil.java
│   │       │                       ├── controller/
│   │       │                       │   ├── CartController.java
│   │       │                       │   ├── GoodsController.java
│   │       │                       │   ├── MemberController.java
│   │       │                       │   └── OrderController.java
│   │       │                       ├── domain/
│   │       │                       │   └── ESItem.java
│   │       │                       ├── dto/
│   │       │                       │   ├── Cart.java
│   │       │                       │   ├── CartProduct.java
│   │       │                       │   ├── CateProductsResult.java
│   │       │                       │   ├── CategoryProductPageInfo.java
│   │       │                       │   ├── EmailCode.java
│   │       │                       │   ├── Member.java
│   │       │                       │   ├── MemberLogin.java
│   │       │                       │   ├── Order.java
│   │       │                       │   ├── OrderInfo.java
│   │       │                       │   ├── OrderPay.java
│   │       │                       │   ├── PageOrder.java
│   │       │                       │   ├── ProductDet.java
│   │       │                       │   ├── TbCate.java
│   │       │                       │   ├── TbPanelContentDto.java
│   │       │                       │   ├── TbPanelDto.java
│   │       │                       │   └── UploadImg.java
│   │       │                       ├── job/
│   │       │                       │   └── OrderCloseJob.java
│   │       │                       ├── mapper/
│   │       │                       │   ├── TbAddressMapper.java
│   │       │                       │   ├── TbExpressMapper.java
│   │       │                       │   ├── TbItemCatMapper.java
│   │       │                       │   ├── TbItemDescMapper.java
│   │       │                       │   ├── TbItemMapper.java
│   │       │                       │   ├── TbMemberMapper.java
│   │       │                       │   ├── TbOrderItemMapper.java
│   │       │                       │   ├── TbOrderMapper.java
│   │       │                       │   ├── TbOrderShippingMapper.java
│   │       │                       │   ├── TbPanelContentMapper.java
│   │       │                       │   ├── TbPanelMapper.java
│   │       │                       │   └── TbUserMapper.java
│   │       │                       ├── repositories/
│   │       │                       │   └── ItemRepository.java
│   │       │                       └── service/
│   │       │                           ├── CartService.java
│   │       │                           ├── ContentService.java
│   │       │                           ├── ItemCatService.java
│   │       │                           ├── MemberService.java
│   │       │                           ├── OrderService.java
│   │       │                           ├── ProductService.java
│   │       │                           └── impl/
│   │       │                               ├── CartServiceImpl.java
│   │       │                               ├── ContentServiceImpl.java
│   │       │                               ├── ItemCatServiceImpl.java
│   │       │                               ├── MemberServieImpl.java
│   │       │                               ├── OrderServiceImpl.java
│   │       │                               └── ProductServiceImpl.java
│   │       ├── resources/
│   │       │   ├── generatorConfig.xml
│   │       │   ├── log4j.properties
│   │       │   ├── log4j2.properties
│   │       │   ├── mapper/
│   │       │   │   ├── TbAddressMapper.xml
│   │       │   │   ├── TbExpressMapper.xml
│   │       │   │   ├── TbItemCatMapper.xml
│   │       │   │   ├── TbItemDescMapper.xml
│   │       │   │   ├── TbItemMapper.xml
│   │       │   │   ├── TbMemberMapper.xml
│   │       │   │   ├── TbOrderItemMapper.xml
│   │       │   │   ├── TbOrderMapper.xml
│   │       │   │   ├── TbOrderShippingMapper.xml
│   │       │   │   ├── TbPanelContentMapper.xml
│   │       │   │   ├── TbPanelMapper.xml
│   │       │   │   └── TbUserMapper.xml
│   │       │   ├── mybatis-config.xml
│   │       │   ├── resource.properties
│   │       │   ├── spring-context-druid.xml
│   │       │   ├── spring-context-elasticsearch.xml
│   │       │   ├── spring-context-mybatis.xml
│   │       │   ├── spring-context-redis.xml
│   │       │   ├── spring-context.xml
│   │       │   ├── spring-mvc.xml
│   │       │   ├── ymall.properties
│   │       │   └── zfbinfo.properties
│   │       └── webapp/
│   │           └── WEB-INF/
│   │               ├── templates/
│   │               │   ├── reset-pass.html
│   │               │   └── update-email.html
│   │               └── web.xml
│   └── test/
│       └── com/
│           └── yuu/
│               └── ymall/
│                   └── web/
│                       └── api/
│                           └── test/
│                               └── EsTest.java
└── ymall-web-ui/
    ├── .babelrc
    ├── .editorconfig
    ├── .eslintignore
    ├── .eslintrc.js
    ├── .gitignore
    ├── .postcssrc.js
    ├── build/
    │   ├── build.js
    │   ├── check-versions.js
    │   ├── dev-client.js
    │   ├── dev-server.js
    │   ├── utils.js
    │   ├── vue-loader.conf.js
    │   ├── webpack.base.conf.js
    │   ├── webpack.dev.conf.js
    │   └── webpack.prod.conf.js
    ├── config/
    │   ├── dev.env.js
    │   ├── index.js
    │   └── prod.env.js
    ├── index.html
    ├── package.json
    ├── src/
    │   ├── App.vue
    │   ├── api/
    │   │   ├── cart.js
    │   │   ├── goods.js
    │   │   ├── index.js
    │   │   ├── member.js
    │   │   ├── order.js
    │   │   └── public.js
    │   ├── assets/
    │   │   ├── icon/
    │   │   │   └── iconfont.css
    │   │   └── style/
    │   │       ├── common.scss
    │   │       ├── index.scss
    │   │       ├── mixin.scss
    │   │       ├── reset.scss
    │   │       └── theme.scss
    │   ├── common/
    │   │   ├── footer.vue
    │   │   └── header.vue
    │   ├── components/
    │   │   ├── YButton.vue
    │   │   ├── buynum.vue
    │   │   ├── countDown.vue
    │   │   ├── mallGoods.vue
    │   │   ├── popup.vue
    │   │   ├── product.vue
    │   │   └── shelf.vue
    │   ├── main.js
    │   ├── page/
    │   │   ├── Cart/
    │   │   │   └── cart.vue
    │   │   ├── Checkout/
    │   │   │   └── checkout.vue
    │   │   ├── Goods/
    │   │   │   ├── goods.vue
    │   │   │   └── goodsDetails.vue
    │   │   ├── Home/
    │   │   │   └── home.vue
    │   │   ├── Login/
    │   │   │   ├── forgetPassword.vue
    │   │   │   ├── login.vue
    │   │   │   └── register.vue
    │   │   ├── Order/
    │   │   │   ├── order.vue
    │   │   │   ├── payment.vue
    │   │   │   └── paysuccess.vue
    │   │   ├── Refresh/
    │   │   │   └── refreshsearch.vue
    │   │   ├── Search/
    │   │   │   └── search.vue
    │   │   ├── User/
    │   │   │   ├── children/
    │   │   │   │   ├── addressList.vue
    │   │   │   │   ├── information.vue
    │   │   │   │   ├── order.vue
    │   │   │   │   └── orderDetail.vue
    │   │   │   └── user.vue
    │   │   └── index.vue
    │   ├── router/
    │   │   └── index.js
    │   ├── store/
    │   │   ├── action.js
    │   │   ├── index.js
    │   │   ├── mutation-types.js
    │   │   └── mutations.js
    │   └── utils/
    │       └── storage.js
    └── static/
        ├── .gitkeep
        ├── geetest/
        │   └── gt.js
        ├── images/
        │   └── global-logo-red@2x.psd
        └── js/
            ├── 3.c565d4ee71bdb3ac0105.js
            ├── 7.0814cc986a8375eb2381.js
            └── app.e28b119acf7c187f0fbf.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Windows-specific files that require CRLF:
*.bat       eol=crlf
*.txt        eol=crlf

# Unix-specific files that require LF:
*.java        eol=lf
*.sh        eol=lf

*.js linguist-language=Java

================================================
FILE: .gitignore
================================================
target/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans

### IntelliJ IDEA ###
.idea/*
*.iws
*.iml
*.ipr

### JRebel ###
rebel.xml

### MAC ###
.DS_Store

### Other ###
logs/
temp/

/.idea/


================================================
FILE: README.md
================================================
## YMall

## 开发环境

- 操作系统:Windows 10 Enterprise
- 开发工具:Intellij IDEA
- 数据库:MySQL 8.0.13
- Java SDK:Oracle JDK 1.8.152

## 项目管理工具

- 项目构建:Maven
- 代码管理:Git

## 后台主要技术栈

- 核心框架:Spring + Spring MVC + MyBatis
- 数据库连接池:Alibaba Druid
- 数据库缓存:Redis
- 接口文档引擎:Swagger2 RESTful 风格 API 文档生成
- 全文检索引擎:Elasticsearch
- 系统任务调度:Quartz

## 前后分离

- 前端框架:NodeJS + Vue + Axios
- 前端模板:ElementUI

## 项目截图

### YMall 商城前台

- 首页

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页.png)


![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页-1.png)

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页-2.png)

- 分类商品页

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/分类商品页.png)

- 商品详情页

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/商品详情页-1.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/商品详情页-2.png)

- 购物车

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/购物车.png)

- 下单

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/下单-1.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/下单-2.png)

- 支付

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/支付-1.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/支付-2.png)

- 会员中心-我的订单

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-1.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-1-1.png)

- 会员中心-账号资料

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-2.png)

- 会员中心-修改地址

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-3.png)

- 注册

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/注册.png)

- 登录

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/登录.png)

- 忘记密码

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/忘记密码.png)



### YMall 商城后台

- 首页

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/后台首页.png)

## 项目部署
### 1. 运行项目所需环境

- JDK 1.8
- IDEA
- MySQL 5.5 以上
- Tomcat 8
- Elasticsearch 5.6
- Redis

确保你已经安装上述环境,以上安装教程可自行百度...,安装记得修改 `ymall-web-api` 和 `ymall-web-admin` 的 Redis 和 Elasticsearch 的连接地址
![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-13-20.png)

- 还需要七牛云的图片服务器和阿里云沙箱支付的密钥,请自行申请

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-51-23.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-51-45.png)

### 2. 导入项目

- `IDEA` -> `open`

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113094747.png)


- 手动安装 `alipay` 依赖到本地仓库

    因为 Mavan 中央仓库没有 alipay 的依赖所以需要手动安装依赖本地仓库,`alipay` 的 jar 文件在 `ymall-dependencies` 下的 `lib` 目录
    
    在 jar 包的目录,执行 Maven 安装依赖的命令:
    ```java
    mvn install:install-file -DgroupId=com.alipay -DartifactId=alipay-trade-sdk -Dversion=20161215 -Dpackaging=jar -Dfile=alipay-trade-sdk-20161215.jar
    ```

- 刷新依赖

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113095010.png)

### 3. 导入 SQL 文件

 sql 文件在 `sql\ymall.sql`

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103213.png)

### 4. 部署接口项目

  由于前台使用的是前后分离,所以接口项目是给前台 Vue 项目使用的

- 配置 `Tomcat`

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103534.png)

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103657.png)



- 选择文件部署

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104301.png)

- 配置端口号 `9090` JMX port `1100`

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104354.png)

- 运行

  ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104506.png)

### 5. 部署后台项目

后台项目暂时为 SSM + Jsp 项目,后期可能会重构为 VUE 项目

部署方式与接口项目一致,只需要改端口号和 JMX port 即可

![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104946.png)

### 6. 启动前台 vue 项目

- 确保已安装 `node.js`
- `npm install` 安装依赖
- `npm install node-sass` 安装 sass
- `npm run dev` 运行项目



================================================
FILE: pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yuu</groupId>
    <artifactId>ymall</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>ymall-dependencies</module>
        <module>ymall-commons</module>
        <module>ymall-domain</module>
        <module>ymall-web-admin</module>
		<module>ymall-web-api</module>
    </modules>
</project>

================================================
FILE: sql/ymall.sql
================================================
/*
SQLyog Ultimate v12.5.0 (64 bit)
MySQL - 5.5.60 : Database - ymall
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`ymall` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `ymall`;

/*Table structure for table `tb_address` */

DROP TABLE IF EXISTS `tb_address`;

CREATE TABLE `tb_address` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '地址编号',
  `user_id` bigint(20) DEFAULT NULL COMMENT '会员编号',
  `user_name` varchar(255) DEFAULT NULL COMMENT '名称',
  `tel` varchar(255) DEFAULT NULL COMMENT '电话',
  `street_name` varchar(255) DEFAULT NULL COMMENT '地址详细信息',
  `is_default` tinyint(1) DEFAULT NULL COMMENT '是否为默认地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

/*Data for the table `tb_address` */

insert  into `tb_address`(`id`,`user_id`,`user_name`,`tel`,`street_name`,`is_default`) values 
(14,78,'Yuu','13055206361','福建省厦门市集美区集美大学诚毅学院',0),
(15,78,'杨雨衡','13055206361','福建省厦门市集美区集美大学诚毅学院',1);

/*Table structure for table `tb_express` */

DROP TABLE IF EXISTS `tb_express`;

CREATE TABLE `tb_express` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '快递编号',
  `express_name` varchar(255) DEFAULT NULL COMMENT '快递名称',
  `sort_order` int(11) DEFAULT NULL COMMENT '排序值',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='商品描述表';

/*Data for the table `tb_express` */

insert  into `tb_express`(`id`,`express_name`,`sort_order`,`created`,`updated`) values 
(4,'顺丰快递',1,'2019-07-10 11:05:50','2019-07-10 11:05:50'),
(5,'中通快递',2,'2019-07-10 11:05:58','2019-07-10 11:05:58'),
(6,'韵达快递',3,'2019-07-10 11:06:05','2019-07-10 11:06:05'),
(7,'申通快递',4,'2019-07-10 11:06:15','2019-07-10 11:06:15'),
(8,'Y速运',0,'2019-07-10 11:06:26','2019-07-10 11:06:26');

/*Table structure for table `tb_item` */

DROP TABLE IF EXISTS `tb_item`;

CREATE TABLE `tb_item` (
  `id` bigint(20) NOT NULL COMMENT '商品编号',
  `title` varchar(100) DEFAULT NULL COMMENT '商品标题',
  `sell_point` varchar(100) DEFAULT NULL COMMENT '商品卖点',
  `price` decimal(10,2) DEFAULT '0.00' COMMENT '商品价格',
  `num` int(11) DEFAULT NULL COMMENT '库存数量',
  `limit_num` int(11) DEFAULT NULL COMMENT '售卖数量限制',
  `image` varchar(2000) DEFAULT NULL COMMENT '商品图片',
  `cid` bigint(11) DEFAULT NULL COMMENT '所属分类',
  `status` int(1) DEFAULT '1' COMMENT '商品状态 1正常 0下架',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  KEY `status` (`status`),
  KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

/*Data for the table `tb_item` */

insert  into `tb_item`(`id`,`title`,`sell_point`,`price`,`num`,`limit_num`,`image`,`cid`,`status`,`created`,`updated`) values 
(156268231822963,'HUAWEI P30 Pro 麒麟980 超感光徕卡四摄 屏内指纹 双景录像 ','8GB+128GB 全网通版(天空之境)',5488.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FpKQOpEUgDUuda0qObUovy454Ubd,http://pub7lsomw.bkt.clouddn.com/FkdP5QRm_0H3abio19Aie39RRF9j,http://pub7lsomw.bkt.clouddn.com/Fux2wRIMI1HDFm42BKro3J5V1-8p,http://pub7lsomw.bkt.clouddn.com/Fqg2ASg782ZQOlwZKC2z_-ukbNYD,http://pub7lsomw.bkt.clouddn.com/FptgIlZ-ukR4_XAxl5Pg5iUaDw6T',1235,1,'2019-07-09 22:25:18','2019-07-09 22:48:06'),
(156268365230771,'HUAWEI nova 5 8GB+128GB 全网通版','【nova 5新品将于7.13日开始预订,7.20日首销,敬请期待】',2799.00,999,5,'http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW,http://pub7lsomw.bkt.clouddn.com/Fr_aVXduBnaInGL7s4f-i43vgAiM,http://pub7lsomw.bkt.clouddn.com/Fjt_DKhvAo4Xwj3yNXT7k5LIHOYi,http://pub7lsomw.bkt.clouddn.com/FsHn1FemvV1hGiHyFhPRtcqcSEWa,http://pub7lsomw.bkt.clouddn.com/Fs2_dvgllnhG-4Vr2-dpFO8x371_',1247,1,'2019-07-09 22:47:32','2019-07-09 23:02:50'),
(156269705828174,'荣耀Note10 全网通 6GB+64GB 幻影蓝 AMOLED全面屏手机 AI智能 GT游戏加速 双卡双待 长续航','【到手价1899】①限时优惠900元②享3期/6期免息; 麒麟970AI芯片|液冷双Turbo|6.95英寸全面屏',1899.00,999,20,'http://pub7lsomw.bkt.clouddn.com/FvQQ7z7CmNs_RCAW0cundgE6Ho9S,http://pub7lsomw.bkt.clouddn.com/Fl5RdjBWrM2HYgCClA8IMZo9HXq0,http://pub7lsomw.bkt.clouddn.com/Ft9LWvfh6c-VTQe2VX2iDzW_Wno7,http://pub7lsomw.bkt.clouddn.com/FmZY-Du13VkJIC-ul_JHtXRGtVFJ,http://pub7lsomw.bkt.clouddn.com/FmTwXP4qzFIMqzwYYU2XTPGqJdS2',1234,1,'2019-07-10 02:30:58','2019-07-10 02:57:49'),
(156269945407026,'荣耀8X Max 骁龙660 7.12英寸高屏占比珍珠屏 5000mAh大电池 全网通 6GB+64GB(魅海蓝)',' 7.12英寸90%屏占比珍珠屏 随身影院 5000mAh大电池',1399.00,998,20,'http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv,http://pub7lsomw.bkt.clouddn.com/FhyzRQUYRw6PaV-wE1Cz0vlmkR8s,http://pub7lsomw.bkt.clouddn.com/FsgkuYsYjhVFQ4wyi8DzZSHln27f,http://pub7lsomw.bkt.clouddn.com/FkkXEzlxkGgCPhQnlDEpCQDulQgJ,http://pub7lsomw.bkt.clouddn.com/FnHh-OAB9C9IxjWl75SlhQm3-VTE',1234,1,'2019-07-10 03:10:54','2019-07-10 03:20:31'),
(156271863486747,'荣耀10青春版 幻彩渐变 2400万AI自拍 6.21英寸高屏占比珍珠屏 全网通 4GB+64GB(渐变蓝)','优惠300,成交价1099!',1099.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FsD8plGUl9aSSTEobuQsewLd4l8e,http://pub7lsomw.bkt.clouddn.com/FpjsmsV6g0c2h08Azl6-MujgtTFX,http://pub7lsomw.bkt.clouddn.com/FmideoIREC0_50lxsxI7umVYVag6,http://pub7lsomw.bkt.clouddn.com/Fm87xVbflJUQw7c33EiDsfLmjcFD,http://pub7lsomw.bkt.clouddn.com/FgzUwHgH46jz7fxPJKLtpEHvNipZ',1234,1,'2019-07-10 08:30:34','2019-07-10 08:30:34'),
(156271954394859,'HUAWEI Mate 20 X 6GB+128GB 全网通版(宝石蓝)','麒麟980新一代人工智能芯片,4000万超大广角徕卡三摄,5000mAh大电池,石墨烯液冷散热技术加持旗舰手机',4099.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FujL3yUs0vkqKYiz70Kewx5Wm6G-,http://pub7lsomw.bkt.clouddn.com/Fj6xJ3l-WqDh-EM6mEBXw9PKJNu-,http://pub7lsomw.bkt.clouddn.com/Ft0mfQuRx8-OK3ON2MFi18XzSP_E,http://pub7lsomw.bkt.clouddn.com/FoKCzHlOBv3PhUqBg5y03ZyEZuT4,http://pub7lsomw.bkt.clouddn.com/FoJpbDfzSNjxJtIBD347z6V0vYXn',1248,1,'2019-07-10 08:45:43','2019-07-10 08:45:43'),
(156272085015807,'荣耀Magic2 魔法全视屏 麒麟980AI芯片 屏内指纹 超广角AI三摄 全网通 6GB+128GB 渐变黑','麒麟980 AI处理器,后置2400万 AI三摄,40W安全超级快充。',2499.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FvaioHuROssa58-WubEN6RzsLkMX,http://pub7lsomw.bkt.clouddn.com/Fl2yKYN91x7MYP-1-mMS-zU5ihQK,http://pub7lsomw.bkt.clouddn.com/FjrY2auIZ6F2W3SUBXcKXnd57YAf,http://pub7lsomw.bkt.clouddn.com/Fob962hE38xjhuGuT90OkzNGSkVi,http://pub7lsomw.bkt.clouddn.com/FvnIfbbBJBCTTjEjWljJKUHh-_Dh',1234,1,'2019-07-10 09:07:30','2019-07-10 09:07:30'),
(156272096620228,'HUAWEI nova 4 4800万超广角三摄 自拍极点全面屏 高配 8GB+128GB 全网通版(蜜语红·星耀版)',' 6.4英寸极点全面屏,4800万超广角三摄,2500万海报级自拍,AI微塑美颜,来电视频铃声,AI视频专家自动剪辑主角故事。',2799.00,998,10,'http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33,http://pub7lsomw.bkt.clouddn.com/Fi6ZLAkm362MZvqug0WKpODNvr1d,http://pub7lsomw.bkt.clouddn.com/FviVJduugrDkGigsVP89taEFpKvP,http://pub7lsomw.bkt.clouddn.com/FmHIIRxJnBXkz-EYUM_iYcEjuDig,http://pub7lsomw.bkt.clouddn.com/FjE__GdtP-aEWYKFkrjkttdO0ccY',1247,1,'2019-07-10 09:09:26','2019-07-10 09:09:26'),
(156272121662666,'荣耀畅玩8A 6.09英寸珍珠全面屏 震撼大音量 标配版 全网通 3GB+32GB(幻夜黑)','【到手价:749元】①下单立减50!②送原厂手机壳 ③晒单抽奖赢好礼!④送超值券包',799.00,998,10,'http://pub7lsomw.bkt.clouddn.com/FjkGpyu7wzBeRD0Sb3ePgNk3y9sl,http://pub7lsomw.bkt.clouddn.com/FgMuNXTHEhhzgvoUx0e9M_Sxqvlx,http://pub7lsomw.bkt.clouddn.com/FnX606l3BbD1I7zHYSrGIglfT68U,http://pub7lsomw.bkt.clouddn.com/FpowJ1Pd24F2Qv45QSmy4Nabb0Vw,http://pub7lsomw.bkt.clouddn.com/FtRWHvpISqVRUFM3YptPzYCXRYyz',1249,1,'2019-07-10 09:13:36','2019-07-10 09:13:36'),
(156272133543147,'HUAWEI nova 4e 3200万立体美颜 AI超广角三摄 4GB+128GB 全网通版(雀翎蓝)',' 3200万立体美颜,AI超广角三摄,3D曲面玻璃,128GB大内存',1799.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FtExSRPJRGsDXEDLFjly_ZMjSljI,http://pub7lsomw.bkt.clouddn.com/FtB2HlS25f9-9jPu0AYQIkPYboyM,http://pub7lsomw.bkt.clouddn.com/Fp_aY2PfiNtscRLclwKXcr75KldO,http://pub7lsomw.bkt.clouddn.com/FoL7ZyfaY7WjM9tUMDUjUePikz-Y',1247,1,'2019-07-10 09:15:35','2019-07-10 09:15:35');

/*Table structure for table `tb_item_cat` */

DROP TABLE IF EXISTS `tb_item_cat`;

CREATE TABLE `tb_item_cat` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类编号',
  `parent_id` bigint(20) DEFAULT NULL COMMENT '父分类ID=0时代表一级根分类',
  `name` varchar(50) DEFAULT NULL COMMENT '分类名称',
  `status` int(1) DEFAULT '1' COMMENT '状态 1启用 0禁用',
  `sort_order` int(4) DEFAULT NULL COMMENT '排列序号',
  `is_parent` tinyint(1) DEFAULT '1' COMMENT '是否为父分类 1为true 0为false',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `parent_id` (`parent_id`,`status`) USING BTREE,
  KEY `sort_order` (`sort_order`)
) ENGINE=InnoDB AUTO_INCREMENT=1250 DEFAULT CHARSET=utf8 COMMENT='商品类目';

/*Data for the table `tb_item_cat` */

insert  into `tb_item_cat`(`id`,`parent_id`,`name`,`status`,`sort_order`,`is_parent`,`created`,`updated`) values 
(-1,0,'所有商品',1,0,1,'2019-07-09 17:08:00','2019-07-09 17:08:03'),
(1214,0,'手机',1,1,1,'2019-07-09 17:08:56','2019-07-09 17:08:56'),
(1221,0,'笔记本&平板',1,2,1,NULL,'2019-07-09 22:05:38'),
(1234,1214,'荣耀系列',1,1,0,NULL,'2019-07-10 08:42:54'),
(1235,1214,'HUAWEI P系列',1,2,0,'2019-07-09 22:06:15','2019-07-09 22:06:15'),
(1236,1221,'平板电脑',1,1,0,'2019-07-09 22:07:10','2019-07-09 22:07:10'),
(1237,1221,'笔记本电脑',1,2,0,'2019-07-09 22:07:21','2019-07-09 22:07:21'),
(1238,1221,'笔记本配件',1,3,0,'2019-07-09 22:07:30','2019-07-09 22:07:30'),
(1239,0,'智能穿戴',1,3,1,'2019-07-09 22:07:43','2019-07-09 22:07:43'),
(1240,1239,'手环',1,1,0,'2019-07-09 22:07:52','2019-07-09 22:07:52'),
(1241,1239,'电视盒子',1,2,0,'2019-07-09 22:07:58','2019-07-09 22:07:58'),
(1242,1239,'照明',1,3,0,'2019-07-09 22:08:06','2019-07-09 22:08:06'),
(1243,0,'热销配件',1,4,1,'2019-07-09 22:08:13','2019-07-09 22:08:13'),
(1244,1243,'保护壳',1,1,0,'2019-07-09 22:08:20','2019-07-09 22:08:20'),
(1245,1243,'移动电源',1,2,0,'2019-07-09 22:08:26','2019-07-09 22:08:26'),
(1246,1243,'耳机',1,3,0,NULL,'2019-07-09 22:08:39'),
(1247,1214,'HUAWEI nova系列',1,3,0,NULL,'2019-07-10 09:17:22'),
(1248,1214,'Mate 系列',1,4,0,'2019-07-10 08:42:50','2019-07-10 08:42:50'),
(1249,1214,'畅玩系列',1,5,0,'2019-07-10 09:10:33','2019-07-10 09:10:33');

/*Table structure for table `tb_item_desc` */

DROP TABLE IF EXISTS `tb_item_desc`;

CREATE TABLE `tb_item_desc` (
  `item_id` bigint(20) NOT NULL COMMENT '商品编号',
  `item_desc` text COMMENT '商品描述',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品描述表';

/*Data for the table `tb_item_desc` */

insert  into `tb_item_desc`(`item_id`,`item_desc`,`created`,`updated`) values 
(156266413524759,'<p><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FgFzGQ1ErxI8TVxfo4cAZu1RcWOR\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FpNugyQTtHpVDW3O1xhCVCzl9RHx\"></p><p><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FnkZDuiG2tnliVWV3SwFw2PmGqGQ\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/Fv0NQMvATI6YQ1DFx4B7I7W2bXtd\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FjwOrCdiGXcmDRhWwat2qNa_ugse\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/Fn6LkE_1EfkofRvMqydkCUKooFIu\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/Fn0U9WORRsWsoNf_1Ij014BX9CZD\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FqUcMZB5bZJtYhtc0WLFN42gRtG2\"><img style=\"max-width:100%;\" src=\"http://pub7lsomw.bkt.clouddn.com/FqdPmUqxC_z60aDCqzrzrrBV7uW6\"><b></b><i></i><u></u><sub></sub><sup></sup><strike></strike><br></p>','2019-07-09 17:22:15','2019-07-09 17:25:47'),
(156267056226257,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FsQ0_KGIHunwcub4kUmg-qZBNbrg\" style=\"max-width:100%;\"><br></p>','2019-07-09 19:09:22','2019-07-09 20:51:29'),
(156267834403843,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FsU-MGJ1Rn-_DyDR-igw3dqROkaj\" style=\"max-width:100%;\"><br></p>','2019-07-09 21:19:04','2019-07-09 21:24:27'),
(156267929355630,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FnXJRoKBdVPqpLh0N6xl25OmW7Uq\" style=\"max-width:100%;\"><br></p>','2019-07-09 21:34:55','2019-07-09 21:39:00'),
(156268007938096,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FpbBVoRbk0C3V-yRzlivAb4hAcaI\" style=\"max-width:100%;\"><br></p>','2019-07-09 21:47:59','2019-07-09 22:04:24'),
(156268231822963,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FsU-MGJ1Rn-_DyDR-igw3dqROkaj\" style=\"max-width:100%;\"><br></p>','2019-07-09 22:25:18','2019-07-09 22:48:06'),
(156268365230771,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/lgepvbcpxvKr47jm-vpKEklJfLwJ\" style=\"max-width:100%;\"><br></p>','2019-07-09 22:47:32','2019-07-09 23:02:50'),
(156269705828174,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/ljWozpWDNgoQxU7Rr_Dx9EA8jows\" style=\"max-width:100%;\"><br></p>','2019-07-10 02:30:58','2019-07-10 02:57:49'),
(156269945407026,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/lt48nkiYdkXFMG65rWkW1JMqf9Uw\" style=\"max-width:100%;\"><br></p>','2019-07-10 03:10:54','2019-07-10 03:20:31'),
(156271863486747,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/lvtRbvNgr22sNouj9Hyidp6WGnJG\" style=\"max-width:100%;\"><br></p>','2019-07-10 08:30:34','2019-07-10 08:30:34'),
(156271954394859,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FujL3yUs0vkqKYiz70Kewx5Wm6G-\" style=\"max-width:100%;\"><br></p>','2019-07-10 08:45:43','2019-07-10 08:45:43'),
(156272085015807,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FvaioHuROssa58-WubEN6RzsLkMX\" style=\"max-width:100%;\"><br></p>','2019-07-10 09:07:30','2019-07-10 09:07:30'),
(156272096620228,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33\" style=\"max-width:100%;\"><br></p>','2019-07-10 09:09:26','2019-07-10 09:09:26'),
(156272121662666,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FjkGpyu7wzBeRD0Sb3ePgNk3y9sl\" style=\"max-width:100%;\"><br></p>','2019-07-10 09:13:36','2019-07-10 09:13:36'),
(156272133543147,'<p><img src=\"http://pub7lsomw.bkt.clouddn.com/FtExSRPJRGsDXEDLFjly_ZMjSljI\" style=\"max-width:100%;\"><br></p>','2019-07-10 09:15:35','2019-07-10 09:15:35');

/*Table structure for table `tb_member` */

DROP TABLE IF EXISTS `tb_member`;

CREATE TABLE `tb_member` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '会员编号',
  `username` varchar(50) DEFAULT NULL COMMENT '用户名',
  `password` varchar(32) NOT NULL COMMENT '密码,加密存储',
  `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',
  `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
  `sex` varchar(2) DEFAULT NULL COMMENT '性别',
  `state` int(1) DEFAULT '0' COMMENT '会员状态 1正常 2封禁',
  `file` varchar(255) DEFAULT 'https://yuu-1257159061.cos.ap-guangzhou.myqcloud.com/ymall/default-user-avatar.png' COMMENT '头像',
  `description` varchar(500) DEFAULT NULL COMMENT '会员描述',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`) USING BTREE,
  UNIQUE KEY `email` (`email`) USING BTREE,
  KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='用户表';

/*Data for the table `tb_member` */

insert  into `tb_member`(`id`,`username`,`password`,`phone`,`email`,`sex`,`state`,`file`,`description`,`created`,`updated`) values 
(78,NULL,'93bb7f2ba5d3d4be1af978726b97b4be','13055206361',NULL,NULL,1,'http://pub7lsomw.bkt.clouddn.com/1562726657635.png',NULL,'2019-07-10 10:38:34','2019-07-10 10:38:34');

/*Table structure for table `tb_order` */

DROP TABLE IF EXISTS `tb_order`;

CREATE TABLE `tb_order` (
  `id` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '订单编号',
  `payment` decimal(10,2) DEFAULT NULL COMMENT '实付金额',
  `payment_type` int(1) DEFAULT NULL COMMENT '支付类型 1在线支付 2货到付款',
  `post_fee` decimal(10,2) DEFAULT NULL COMMENT '邮费',
  `status` int(1) DEFAULT NULL COMMENT '状态 0未付款 1已付款 2未发货 3已发货 4交易成功 5交易关闭 6交易失败',
  `payment_time` datetime DEFAULT NULL COMMENT '付款时间',
  `consign_time` datetime DEFAULT NULL COMMENT '发货时间',
  `end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
  `close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
  `shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称',
  `shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号',
  `user_id` bigint(20) DEFAULT NULL COMMENT '会员编号',
  `buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言',
  `buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称',
  `buyer_comment` tinyint(1) DEFAULT NULL COMMENT '买家是否已经评价',
  `created` datetime DEFAULT NULL COMMENT '订单创建时间',
  `updated` datetime DEFAULT NULL COMMENT '订单更新时间',
  PRIMARY KEY (`id`),
  KEY `buyer_nick` (`buyer_nick`),
  KEY `status` (`status`),
  KEY `payment_type` (`payment_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `tb_order` */

insert  into `tb_order`(`id`,`payment`,`payment_type`,`post_fee`,`status`,`payment_time`,`consign_time`,`end_time`,`close_time`,`shipping_name`,`shipping_code`,`user_id`,`buyer_message`,`buyer_nick`,`buyer_comment`,`created`,`updated`) values 
('156272657441294',9195.00,NULL,NULL,4,NULL,NULL,NULL,NULL,NULL,NULL,78,NULL,'13055206361',NULL,'2019-07-10 10:42:54','2019-07-10 10:42:54');

/*Table structure for table `tb_order_item` */

DROP TABLE IF EXISTS `tb_order_item`;

CREATE TABLE `tb_order_item` (
  `id` varchar(20) COLLATE utf8_bin NOT NULL,
  `item_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '商品id',
  `order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id',
  `num` int(10) DEFAULT NULL COMMENT '商品购买数量',
  `title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品标题',
  `price` decimal(10,2) DEFAULT NULL COMMENT '商品单价',
  `total_fee` decimal(10,2) DEFAULT NULL COMMENT '商品总金额',
  `pic_path` varchar(1000) COLLATE utf8_bin DEFAULT NULL COMMENT '商品图片地址',
  PRIMARY KEY (`id`),
  KEY `item_id` (`item_id`),
  KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `tb_order_item` */

insert  into `tb_order_item`(`id`,`item_id`,`order_id`,`num`,`title`,`price`,`total_fee`,`pic_path`) values 
('156272657442857','156272121662666','156272657441294',1,'荣耀畅玩8A 6.09英寸珍珠全面屏 震撼大音量 标配版 全网通 3GB+32GB(幻夜黑)',799.00,799.00,'http://pub7lsomw.bkt.clouddn.com/FjkGpyu7wzBeRD0Sb3ePgNk3y9sl'),
('156272657444263','156272096620228','156272657441294',1,'HUAWEI nova 4 4800万超广角三摄 自拍极点全面屏 高配 8GB+128GB 全网通版(蜜语红·星耀版)',2799.00,2799.00,'http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33'),
('156272657444438','156269945407026','156272657441294',2,'荣耀8X Max 骁龙660 7.12英寸高屏占比珍珠屏 5000mAh大电池 全网通 6GB+64GB(魅海蓝)',1399.00,2798.00,'http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv'),
('156272657444678','156268365230771','156272657441294',1,'HUAWEI nova 5 8GB+128GB 全网通版',2799.00,2799.00,'http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW');

/*Table structure for table `tb_order_shipping` */

DROP TABLE IF EXISTS `tb_order_shipping`;

CREATE TABLE `tb_order_shipping` (
  `order_id` varchar(50) NOT NULL COMMENT '订单ID',
  `receiver_name` varchar(20) DEFAULT NULL COMMENT '收货人全名',
  `receiver_phone` varchar(20) DEFAULT NULL COMMENT '固定电话',
  `receiver_mobile` varchar(30) DEFAULT NULL COMMENT '移动电话',
  `receiver_province` varchar(10) DEFAULT NULL COMMENT '省份',
  `receiver_city` varchar(10) DEFAULT NULL COMMENT '城市',
  `receiver_district` varchar(20) DEFAULT NULL COMMENT '区/县',
  `receiver_address` varchar(200) DEFAULT NULL COMMENT '收货地址,如:xx路xx号',
  `receiver_zip` varchar(6) DEFAULT NULL COMMENT '邮政编码,如:310001',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `tb_order_shipping` */

insert  into `tb_order_shipping`(`order_id`,`receiver_name`,`receiver_phone`,`receiver_mobile`,`receiver_province`,`receiver_city`,`receiver_district`,`receiver_address`,`receiver_zip`,`created`,`updated`) values 
('156272657441294','杨雨衡','13055206361',NULL,NULL,NULL,NULL,'福建省厦门市集美区集美大学诚毅学院',NULL,'2019-07-10 10:42:54','2019-07-10 10:42:54');

/*Table structure for table `tb_panel` */

DROP TABLE IF EXISTS `tb_panel`;

CREATE TABLE `tb_panel` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
  `name` varchar(50) DEFAULT NULL COMMENT '板块名称',
  `type` int(1) DEFAULT NULL COMMENT '类型 0轮播图 1板块种类一 2板块种类二 3板块种类三 ',
  `sort_order` int(4) DEFAULT NULL COMMENT '排列序号',
  `position` int(1) DEFAULT NULL COMMENT '所属位置 0首页 1商品推荐 2我要捐赠',
  `limit_num` int(4) DEFAULT NULL COMMENT '板块限制商品数量',
  `status` int(1) DEFAULT '1' COMMENT '状态',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `parent_id` (`status`) USING BTREE,
  KEY `sort_order` (`sort_order`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='内容分类';

/*Data for the table `tb_panel` */

insert  into `tb_panel`(`id`,`name`,`type`,`sort_order`,`position`,`limit_num`,`status`,`created`,`updated`) values 
(11,'轮播图',0,0,0,5,1,'2019-07-09 17:00:00','2019-07-09 17:00:00'),
(12,'活动板块1',1,1,0,4,1,'2019-07-09 18:56:18','2019-07-09 18:56:18'),
(13,'热销单品',2,2,0,4,1,NULL,'2019-07-09 23:28:48'),
(14,'精品推荐',3,3,0,8,1,NULL,'2019-07-10 00:10:52'),
(15,'手机',3,4,0,8,1,NULL,'2019-07-10 00:10:59'),
(16,'精品平板',3,6,0,8,1,NULL,'2019-07-10 00:37:49'),
(17,'笔记本电脑',3,5,0,8,1,NULL,'2019-07-10 00:47:24'),
(18,'智能穿戴',3,7,0,7,1,NULL,'2019-07-10 00:53:54'),
(19,'智能家居',3,8,0,7,1,NULL,'2019-07-10 00:54:14'),
(20,'热销配件',3,9,0,7,1,NULL,'2019-07-10 00:54:19'),
(21,'生态精品',3,10,0,7,1,NULL,'2019-07-10 00:54:21'),
(22,'精选配件',3,11,0,7,1,NULL,'2019-07-10 00:54:24');

/*Table structure for table `tb_panel_content` */

DROP TABLE IF EXISTS `tb_panel_content`;

CREATE TABLE `tb_panel_content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `panel_id` int(11) NOT NULL COMMENT '所属板块id',
  `type` int(1) DEFAULT NULL COMMENT '类型 0关联商品 1其他链接 2关联商品(封面)3关联商品(封面)',
  `product_id` bigint(20) DEFAULT NULL COMMENT '关联商品id',
  `sort_order` int(4) DEFAULT NULL COMMENT '排序值',
  `full_url` varchar(500) DEFAULT NULL COMMENT '其他链接',
  `pic_url` varchar(500) DEFAULT NULL COMMENT '图片',
  `pic_url2` varchar(500) DEFAULT NULL COMMENT '3d轮播图备用',
  `pic_url3` varchar(500) DEFAULT NULL COMMENT '3d轮播图备用',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `category_id` (`panel_id`),
  KEY `updated` (`updated`)
) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=utf8;

/*Data for the table `tb_panel_content` */

insert  into `tb_panel_content`(`id`,`panel_id`,`type`,`product_id`,`sort_order`,`full_url`,`pic_url`,`pic_url2`,`pic_url3`,`created`,`updated`) values 
(78,11,0,156268231822963,1,'','http://pub7lsomw.bkt.clouddn.com/FgboEB3GoUaOhhVVrV2iUs_0j4rd',NULL,NULL,NULL,'2019-07-09 22:30:02'),
(79,11,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FmRYkuEFYde6xI-dDcXqsOfSKK3o',NULL,NULL,'2019-07-09 22:48:34','2019-07-09 22:48:34'),
(80,12,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW',NULL,NULL,'2019-07-09 23:07:15','2019-07-09 23:07:15'),
(81,12,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FmyoVNNUwRlMq9L65u6rsJnX-_jD',NULL,NULL,'2019-07-09 23:09:56','2019-07-09 23:09:56'),
(82,12,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FtvjyajKpyy6xteuuDeUmVpxkq2z',NULL,NULL,'2019-07-09 23:10:19','2019-07-09 23:10:19'),
(83,12,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/FmYF8urf5luGTp7EzETexBMTvAz5',NULL,NULL,'2019-07-09 23:10:31','2019-07-09 23:10:31'),
(84,13,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FurHro4g_v6KrvZVVumIdtD3VRVf',NULL,NULL,'2019-07-09 23:26:27','2019-07-09 23:26:27'),
(85,13,0,156268365230771,0,'','http://pub7lsomw.bkt.clouddn.com/FmyoVNNUwRlMq9L65u6rsJnX-_jD',NULL,NULL,'2019-07-09 23:27:26','2019-07-09 23:27:26'),
(86,14,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FrekC0IfRuSfFdZMh9pxVdfEWzFI',NULL,NULL,NULL,'2019-07-09 23:51:14'),
(87,14,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FhVtfCRfReyM37ELaa7canqnSDJy',NULL,NULL,'2019-07-09 23:39:49','2019-07-09 23:39:49'),
(88,14,0,156268231822963,3,'','http://pub7lsomw.bkt.clouddn.com/FuxZbjWZL3g0ZltDwhPGEjju7ynv',NULL,NULL,'2019-07-09 23:40:31','2019-07-09 23:40:31'),
(89,14,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FncB80rXZ6K-549TYrLom-VOQPKb',NULL,NULL,'2019-07-09 23:40:54','2019-07-09 23:40:54'),
(91,14,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/FnEmbcH6sDuaBZW47d6hXOFqeUx5',NULL,NULL,'2019-07-09 23:47:20','2019-07-09 23:47:20'),
(92,14,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FtXF9v_EbPcinP4sIQvaAWZq5NxC',NULL,NULL,'2019-07-09 23:47:37','2019-07-09 23:47:37'),
(93,14,0,156268231822963,0,'','http://pub7lsomw.bkt.clouddn.com/FsTOANA4z23QZDbOnlWijWyeTWOZ',NULL,NULL,NULL,'2019-07-10 00:11:31'),
(94,15,0,156269705828174,1,'','http://pub7lsomw.bkt.clouddn.com/FiAl6TJLp__NvL8_3f0vbLxUhO03',NULL,NULL,NULL,'2019-07-10 02:58:49'),
(95,15,0,156271863486747,2,'','http://pub7lsomw.bkt.clouddn.com/FiNn5h9bT1Wg0EDT2bs4ak5wn0G7',NULL,NULL,NULL,'2019-07-10 08:30:46'),
(96,15,0,156271954394859,3,'','http://pub7lsomw.bkt.clouddn.com/FhmzWEQ5aJxi00lS90199e34YLy7',NULL,NULL,NULL,'2019-07-10 08:46:01'),
(97,14,0,156268231822963,8,'','http://pub7lsomw.bkt.clouddn.com/FnKW_5yeMQJ7W2plr6Yk7TE-6A5k',NULL,NULL,NULL,'2019-07-10 00:12:27'),
(98,15,0,156272085015807,4,'','http://pub7lsomw.bkt.clouddn.com/FvaioHuROssa58-WubEN6RzsLkMX',NULL,NULL,NULL,'2019-07-10 09:08:01'),
(99,15,0,156272096620228,5,'','http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33',NULL,NULL,NULL,'2019-07-10 09:09:45'),
(100,15,0,156272121662666,6,'','http://pub7lsomw.bkt.clouddn.com/Fi2cL3eRANv3iMysg3t0DCsqFpH5',NULL,NULL,NULL,'2019-07-10 09:15:47'),
(101,15,0,156272133543147,7,'','http://pub7lsomw.bkt.clouddn.com/FnEmbcH6sDuaBZW47d6hXOFqeUx5',NULL,NULL,NULL,'2019-07-10 09:15:53'),
(102,15,0,156269945407026,1,'','http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv',NULL,NULL,NULL,'2019-07-10 03:11:13'),
(103,11,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fn5aIOj1sPy9_HPAyy3Us_CRwmLb',NULL,NULL,'2019-07-10 00:21:52','2019-07-10 00:21:52'),
(104,11,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FpkqZw5MHFGD0iOaP6DwfbCfkiof',NULL,NULL,'2019-07-10 00:22:10','2019-07-10 00:22:10'),
(105,11,1,NULL,5,'https://www.71yuu.com/','http://pub7lsomw.bkt.clouddn.com/Fka1NhCLE19wPupRlGSSR-UxtD12',NULL,NULL,'2019-07-10 00:22:36','2019-07-10 00:22:36'),
(106,16,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/Fkb_AeosFyYNFe_giwHo-Gr2IMv2',NULL,NULL,'2019-07-10 00:27:44','2019-07-10 00:27:44'),
(107,16,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/Fh41PYzAklpyqqApDFfCTfYljcab',NULL,NULL,'2019-07-10 00:29:12','2019-07-10 00:29:12'),
(108,16,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fm4gchBeRRVHvzik8PlHxVk02p5H',NULL,NULL,'2019-07-10 00:31:19','2019-07-10 00:31:19'),
(109,16,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/FpA6Nge5X8hMsC4tGz8TkVMrpnQI',NULL,NULL,'2019-07-10 00:32:27','2019-07-10 00:32:27'),
(110,16,0,156268231822963,5,'','http://pub7lsomw.bkt.clouddn.com/FnGy7u1Mtw9xpin9nbBgxFDT8GsZ',NULL,NULL,'2019-07-10 00:33:54','2019-07-10 00:33:54'),
(111,16,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FlD1YI-YO4n8Sm502c9WeGBbV7sS',NULL,NULL,'2019-07-10 00:34:58','2019-07-10 00:34:58'),
(112,16,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FjsM5dug05E_vzFox7Nh24vxItVI',NULL,NULL,'2019-07-10 00:35:40','2019-07-10 00:35:40'),
(113,16,0,156268365230771,8,'','http://pub7lsomw.bkt.clouddn.com/FvkKDWnd_dNViTlDYkNEW9qUDDQ7',NULL,NULL,'2019-07-10 00:36:00','2019-07-10 00:36:00'),
(114,17,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FsTUuP-MY2p8_Rtu75yshgLc9HAA',NULL,NULL,'2019-07-10 00:41:47','2019-07-10 00:41:47'),
(115,17,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FsHMvN6Sh5bYfS1hUwDSSUovV1Iz',NULL,NULL,'2019-07-10 00:42:34','2019-07-10 00:42:34'),
(116,17,0,156268231822963,3,'','http://pub7lsomw.bkt.clouddn.com/Fhq53yhpC8sRp5sYCDCuKMdsxR5x',NULL,NULL,'2019-07-10 00:43:07','2019-07-10 00:43:07'),
(117,17,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FpX5ofiu2JRNceYT1KKfhZEwk5hV',NULL,NULL,'2019-07-10 00:45:14','2019-07-10 00:45:14'),
(118,17,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/Fmg1g_m9jvOkI_C0_oZxrEYnjbMk',NULL,NULL,'2019-07-10 00:45:33','2019-07-10 00:45:33'),
(119,17,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FkOP4JouTXsE3XxRcl4Qs3cD70Sa',NULL,NULL,'2019-07-10 00:46:21','2019-07-10 00:46:21'),
(120,17,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FnOZnlOUbVJPZwdDWYyJOGDz5Wao',NULL,NULL,'2019-07-10 00:46:38','2019-07-10 00:46:38'),
(121,17,0,156268365230771,8,'','http://pub7lsomw.bkt.clouddn.com/FuuLFcc1xLCcOwj5QeyWCA2dfxTl',NULL,NULL,'2019-07-10 00:47:09','2019-07-10 00:47:09'),
(122,18,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FmeWoAGMO4arsC-mswaCRP6Cf2Om',NULL,NULL,NULL,'2019-07-10 00:53:23'),
(123,18,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FjHoRljhhq9JQBcVbH7878v-H7_s',NULL,NULL,'2019-07-10 00:49:51','2019-07-10 00:49:51'),
(124,18,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FmnICU_SGBZTSGCf2ofNz56onMJI',NULL,NULL,'2019-07-10 00:50:34','2019-07-10 00:50:34'),
(125,18,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FhCPEwQhyqSYziYqMekP4EO-9Kfk',NULL,NULL,'2019-07-10 00:51:04','2019-07-10 00:51:04'),
(126,18,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FgelPcSEB2lkd-4t620GUgaAlf4h',NULL,NULL,'2019-07-10 00:51:38','2019-07-10 00:51:38'),
(127,18,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/FjAI4QZEHoyvE7jNepqhx3h1zZnJ',NULL,NULL,'2019-07-10 00:52:12','2019-07-10 00:52:12'),
(128,18,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fg5atYssfQJFLtDJmQzpXByxfWER',NULL,NULL,'2019-07-10 00:52:38','2019-07-10 00:52:38'),
(130,19,2,156268231822963,1,'','http://pub7lsomw.bkt.clouddn.com/FmPsY2qDUIdQ5mUOyWNz_LDWVLFc',NULL,NULL,'2019-07-10 00:54:59','2019-07-10 00:54:59'),
(131,19,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FrpvBCfcQNauK6z8ntxayEbThtbn',NULL,NULL,'2019-07-10 00:55:15','2019-07-10 00:55:15'),
(132,19,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FhEGelnrvmfRP7LHxYuf3CK7QBAZ',NULL,NULL,'2019-07-10 00:55:31','2019-07-10 00:55:31'),
(133,19,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FgS8KX5kQ43ze3Jrmxqb-OzcHb12',NULL,NULL,'2019-07-10 00:55:45','2019-07-10 00:55:45'),
(134,19,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FjmtIGK_CbH1lWkz1F2IqDROWNrQ',NULL,NULL,'2019-07-10 00:56:07','2019-07-10 00:56:07'),
(135,19,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FgS8KX5kQ43ze3Jrmxqb-OzcHb12',NULL,NULL,'2019-07-10 00:56:25','2019-07-10 00:56:25'),
(136,19,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FkxA9knjUc29Vw-XNYWHnxHzmf6v',NULL,NULL,'2019-07-10 00:56:38','2019-07-10 00:56:38'),
(137,20,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FoYaHbVA1_6fln3Zht2F0SoaMTOj',NULL,NULL,NULL,'2019-07-10 00:58:47'),
(138,20,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/Fv9DBHm1MEHEMJhRnmMrW58p45w4',NULL,NULL,'2019-07-10 00:57:22','2019-07-10 00:57:22'),
(139,20,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FlEvT-WvZBjuiHtAwL4QCDWRMVgs',NULL,NULL,'2019-07-10 00:57:33','2019-07-10 00:57:33'),
(140,20,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FrlETSAFEVnIWUvjpUgJcPu_a7AL',NULL,NULL,'2019-07-10 00:57:47','2019-07-10 00:57:47'),
(141,20,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/Flrx2EBC2lobY2eJmAeNALZF_BNI',NULL,NULL,'2019-07-10 00:58:01','2019-07-10 00:58:01'),
(142,20,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/Ftq4x8X8oSzjNq8c9JTfh_kwUKiY',NULL,NULL,'2019-07-10 00:58:12','2019-07-10 00:58:12'),
(143,20,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fkd9mlW2K23UooLUsSgL05wggcxN',NULL,NULL,'2019-07-10 00:58:28','2019-07-10 00:58:28'),
(144,21,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/Fi8CiUEL5N57JoTFOc4i4mm9AEjO',NULL,NULL,'2019-07-10 00:59:07','2019-07-10 00:59:07'),
(145,21,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FivVNRyn8aNjFpwXbD4nzh_-3qZu',NULL,NULL,'2019-07-10 00:59:29','2019-07-10 00:59:29'),
(146,21,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Foox3uBjTPgWIOjVRDLqWTLRx3bp',NULL,NULL,NULL,'2019-07-10 01:00:11'),
(147,21,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/Fttk_HMnMpUy4in9PRxOc7uZjMg5',NULL,NULL,'2019-07-10 01:00:00','2019-07-10 01:00:00'),
(148,21,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FrzmdkpUdoHe32DRog7jafiLff9c',NULL,NULL,'2019-07-10 01:00:28','2019-07-10 01:00:28'),
(149,21,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FrTiUKMvry8N2as8DN6TQfbQUfUW',NULL,NULL,'2019-07-10 01:00:45','2019-07-10 01:00:45'),
(150,21,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fj8scPW_HBIo4MMJbXQA6ajs5LFF',NULL,NULL,'2019-07-10 01:00:58','2019-07-10 01:00:58'),
(151,22,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FoZIcvdU6vkX2HDAshrG7np_07wY',NULL,NULL,NULL,'2019-07-10 01:02:34'),
(152,22,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FjY39dK5GGIekyCMggPuM1W7LCEA',NULL,NULL,NULL,'2019-07-10 01:02:27'),
(153,22,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fq9IcTpReMj9SgjEqZX4YSf5HoBO',NULL,NULL,'2019-07-10 01:02:46','2019-07-10 01:02:46'),
(154,22,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FrgJHhcQNf5UyufKhyyBoFDMWeQg',NULL,NULL,'2019-07-10 01:03:00','2019-07-10 01:03:00'),
(155,22,0,156268231822963,5,'','http://pub7lsomw.bkt.clouddn.com/FurE0pcGxMisGkmxCTrzb8uyAAP3',NULL,NULL,'2019-07-10 01:03:10','2019-07-10 01:03:10'),
(156,22,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/Fg02vwvb86oQGOwQgGoxz6DAIEWV',NULL,NULL,'2019-07-10 01:03:19','2019-07-10 01:03:19'),
(157,22,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fm7d4f9IAx1vb3cPklDh704LvsD1',NULL,NULL,'2019-07-10 01:03:30','2019-07-10 01:03:30');

/*Table structure for table `tb_user` */

DROP TABLE IF EXISTS `tb_user`;

CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '管理员编号',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(32) NOT NULL COMMENT '密码 md5加密存储',
  `created` datetime NOT NULL COMMENT '创建时间',
  `updated` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';

/*Data for the table `tb_user` */

insert  into `tb_user`(`id`,`username`,`password`,`created`,`updated`) values 
(1,'admin','e10adc3949ba59abbe56e057f20f883e','2017-09-05 21:27:54','2017-10-18 22:57:08');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


================================================
FILE: ymall-commons/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.yuu</groupId>
        <artifactId>ymall-dependencies</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../ymall-dependencies/pom.xml</relativePath>
    </parent>

    <artifactId>ymall-commons</artifactId>
    <packaging>jar</packaging>

    <name>ymall-commons</name>
    <description>General Tool Class</description>

    <dependencies>
        <!-- Test Begin -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Test End -->

        <!-- Commons Begin -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
        <!-- Commons End -->

        <!-- HttpClient Begin -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!-- HttpClient End -->

        <!-- Jackson Begin -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <!-- Jackson End -->

        <!-- Json Begin -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </dependency>
        <!-- Json End -->

        <!-- Log Begin-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <!-- Log End -->

        <!-- Lombok Begin -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- Lombok End -->

        <!-- Spring Begin -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <!-- Spring End -->

        <!-- AliYun SMS Begin -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
        </dependency>
        <!-- AliYun SMS End-->

        <!-- Redis Begin -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
        </dependency>
        <!-- Redis End -->

        <!-- Elasticsearch Begin-->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
        </dependency>
        <!-- Elasticsearch End -->
    </dependencies>

</project>


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/consts/Consts.java
================================================
package com.yuu.ymall.commons.consts;

/**
 * @author by Yuu
 * @classname Consts
 * @date 2019/6/24 16:52
 */
public class Consts {

    /**
     * ####### 会员状态 1 正常,2 封禁
     */

    /**
     * 会员状态正常
     */
    public static final Integer MEMBER_STATUS_NORMAL = 1;

    /**
     * 会员状态封禁
     */
    public static final Integer MEMBER_STATUS_BAN = 2;

    /**
     * ###### 订单状态 0 未支付,1 已支付,2 未发货,3 已发货,4 交易成功,5 交易关闭
     */

    /**
     * 未支付
     */
    public static final Integer ORDER_STATUS_NOPAY = 0;

    /**
     * 已支付
     */
    public static final Integer ORDER_STATUS_PAY = 1;

    /**
     * 未发货
     */
    public static final Integer ORDER_STATUS_NOSEND = 2;

    /**
     * 已发货
     */
    public static final Integer ORDER_STATUS_SEND = 3;

    /**
     * 交易成功
     */
    public static final Integer ORDER_STATUS_SUCCESS = 4;

    /**
     * 交易关闭
     */
    public static final Integer ORDER_STATUS_CLOSE = 5;
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/dto/BaseResult.java
================================================
package com.yuu.ymall.commons.dto;

import lombok.Data;

import java.io.Serializable;

/**
 * 前后端交互数据标准
 *
 * @Classname BaseResult
 * @Date 2019/5/12 12:25
 * @Created by Yuu
 */
@Data
public class BaseResult implements Serializable {
    public static final int STATUS_SUCCESS = 200;
    public static final int STATUS_FALL = 500;

    /**
     * 返回状态码
     */
    private int status;

    /**
     * 返回消息
     */
    private String message;

    /**
     * 返回数据
     */
    private Object result;

    /**
     * 返回时间
     */
    private long timestamp = System.currentTimeMillis();

    /**
     * 创建返回对象
     *
     * @param status 返回状态
     * @param message 返回消息
     * @param result  返回数据
     * @return
     */
    private static BaseResult createResult(int status, String message, Object result) {
        BaseResult baseResult = new BaseResult();
        baseResult.setStatus(status);
        baseResult.setMessage(message);
        baseResult.setResult(result);
        return baseResult;
    }

    /**
     * 默认返回成功方法
     *
     * @return
     */
    public static BaseResult success() {
        return BaseResult.createResult(STATUS_SUCCESS, "成功", null);
    }

    /**
     * 返回成功带消息
     *
     * @param message 返回消息
     * @return
     */
    public static BaseResult success(String message) {
        return BaseResult.createResult(STATUS_SUCCESS, message, null);
    }

    /**
     * 返回成功带数据
     *
     * @param result 返回数据
     * @return
     */
    public static BaseResult success(Object result) {
        return BaseResult.createResult(STATUS_SUCCESS, "成功", result);
    }

    /**
     * 返回成功带消息和数据
     *
     * @param message 返回消息
     * @param result 返回数据
     * @return
     */
    public static BaseResult success(String message, Object result) {
        return BaseResult.createResult(STATUS_SUCCESS, message, result);
    }

    /**
     * 默认返回失败方法
     *
     * @return
     */
    public static BaseResult fail() {
       return BaseResult.createResult(STATUS_FALL, "失败", null);
    }

    /**
     * 返回失败带消息
     *
     * @param message 返回消息
     * @return
     */
    public static BaseResult fail(String message) {
        return BaseResult.createResult(STATUS_FALL, message, null);
    }

    /**
     * 返回失败带消息和数据
     *
     * @param message 返回消息
     * @param result 返回数据
     * @return
     */
    public static BaseResult fail(String message, Object result) {
        return BaseResult.createResult(STATUS_FALL, message, result);
    }



}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/execption/YmallUploadException.java
================================================
package com.yuu.ymall.commons.execption;

/**
 * @Classname YMallUploadException
 * @Date 2019/5/24 20:53
 * @Created by Yuu
 */
public class YmallUploadException extends RuntimeException {

    private String msg;

    public YmallUploadException(String msg) {
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetInit.java
================================================
package com.yuu.ymall.commons.geetest;

import java.io.Serializable;

/**
 * @author by Yuu
 * @classname GeetInit
 * @date 2019/6/26 8:47
 */
public class GeetInit implements Serializable {

    private int success;

    private String challenge;

    private String gt;

    private String statusKey;

    public int getSuccess() {
        return success;
    }

    public void setSuccess(int success) {
        this.success = success;
    }

    public String getChallenge() {
        return challenge;
    }

    public void setChallenge(String challenge) {
        this.challenge = challenge;
    }

    public String getGt() {
        return gt;
    }

    public void setGt(String gt) {
        this.gt = gt;
    }

    public String getStatusKey() {
        return statusKey;
    }

    public void setStatusKey(String statusKey) {
        this.statusKey = statusKey;
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetestLib.java
================================================
package com.yuu.ymall.commons.geetest;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

/**
 * 极验 SDK
 *
 * @author by Yuu
 * @classname GeetestLib
 * @date 2019/6/26 8:17
 */
public class GeetestLib {

    public static final String id = "33d7d578860c50a433de5a48e55c6b1d";
    public static final String key = "1a92d3aa44daa8e5501cbcf1a6a0ed7f";
    public static final boolean newfailback = true;

    protected final String verName = "4.0";
    protected final String sdkLang = "java";

    protected final String apiUrl = "http://api.geetest.com";

    protected final String registerUrl = "/register.php";
    protected final String validateUrl = "/validate.php";

    protected final String json_format = "1";

    /**
     * 极验验证二次验证表单数据 chllenge
     */
    public static final String fn_geetest_challenge = "geetest_challenge";

    /**
     * 极验验证二次验证表单数据 validate
     */
    public static final String fn_geetest_validate = "geetest_validate";

    /**
     * 极验验证二次验证表单数据 seccode
     */
    public static final String fn_geetest_seccode = "geetest_seccode";

    /**
     * 公钥
     */
    private String captchaId = "";

    /**
     * 私钥
     */
    private String privateKey = "";

    /**
     * 是否开启新的failback
     */
    private boolean newFailback = false;

    /**
     * 返回字符串
     */
    private String responseStr = "";

    /**
     * 调试开关,是否输出调试日志
     */
    public boolean debugCode = true;

    /**
     * 极验验证API服务状态Session Key
     */
    public String gtServerStatusSessionKey = "gt_server_status";

    /**
     * 带参数构造函数
     *
     * @param captchaId
     * @param privateKey
     */
    public GeetestLib(String captchaId, String privateKey, boolean newFailback) {

        this.captchaId = captchaId;
        this.privateKey = privateKey;
        this.newFailback = newFailback;
    }

    /**
     * 获取本次验证初始化返回字符串
     *
     * @return 初始化结果
     */
    public String getResponseStr() {

        return responseStr;

    }

    public String getVersionInfo() {

        return verName;

    }

    /**
     * 预处理失败后的返回格式串
     *
     * @return
     */
    private String getFailPreProcessRes() {

        Long rnd1 = Math.round(Math.random() * 100);
        Long rnd2 = Math.round(Math.random() * 100);
        String md5Str1 = md5Encode(rnd1 + "");
        String md5Str2 = md5Encode(rnd2 + "");
        String challenge = md5Str1 + md5Str2.substring(0, 2);

        JSONObject jsonObject = new JSONObject();
        try {

            jsonObject.put("success", 0);
            jsonObject.put("gt", this.captchaId);
            jsonObject.put("challenge", challenge);
            jsonObject.put("new_captcha", this.newFailback);

        } catch (JSONException e) {

            gtlog("json dumps error");

        }

        return jsonObject.toString();

    }

    /**
     * 预处理成功后的标准串
     *
     */
    private String getSuccessPreProcessRes(String challenge) {

        gtlog("challenge:" + challenge);

        JSONObject jsonObject = new JSONObject();
        try {

            jsonObject.put("success", 1);
            jsonObject.put("gt", this.captchaId);
            jsonObject.put("challenge", challenge);

        } catch (JSONException e) {

            gtlog("json dumps error");

        }

        return jsonObject.toString();

    }

    /**
     * 验证初始化预处理
     *
     * @return 1表示初始化成功,0表示初始化失败
     */
    public int preProcess(HashMap<String, String> data) {

        if (registerChallenge(data) != 1) {

            this.responseStr = this.getFailPreProcessRes();
            return 0;

        }

        return 1;

    }

    /**
     * 用captchaID进行注册,更新challenge
     *
     * @return 1表示注册成功,0表示注册失败
     */
    private int registerChallenge(HashMap<String, String>data) {

        try {
            String userId = data.get("user_id");
            String clientType = data.get("client_type");
            String ipAddress = data.get("ip_address");

            String getUrl = apiUrl + registerUrl + "?";
            String param = "gt=" + this.captchaId + "&json_format=" + this.json_format;

            if (userId != null){
                param = param + "&user_id=" + userId;
            }
            if (clientType != null){
                param = param + "&client_type=" + clientType;
            }
            if (ipAddress != null){
                param = param + "&ip_address=" + ipAddress;
            }

            gtlog("GET_URL:" + getUrl + param);
            String result_str = readContentFromGet(getUrl + param);
            if (result_str == "fail"){

                gtlog("gtServer register challenge failed");
                return 0;

            }

            gtlog("result:" + result_str);
            JSONObject jsonObject = new JSONObject(result_str);
            String return_challenge = jsonObject.getString("challenge");

            gtlog("return_challenge:" + return_challenge);

            if (return_challenge.length() == 32) {

                this.responseStr = this.getSuccessPreProcessRes(this.md5Encode(return_challenge + this.privateKey));

                return 1;

            }
            else {

                gtlog("gtServer register challenge error");

                return 0;

            }
        } catch (Exception e) {

            gtlog(e.toString());
            gtlog("exception:register api");

        }
        return 0;
    }

    /**
     * 判断一个表单对象值是否为空
     *
     * @param gtObj
     * @return
     */
    protected boolean objIsEmpty(Object gtObj) {

        if (gtObj == null) {

            return true;

        }

        if (gtObj.toString().trim().length() == 0) {

            return true;

        }

        return false;
    }

    /**
     * 检查客户端的请求是否合法,三个只要有一个为空,则判断不合法
     * @param challenge
     * @param validate
     * @param seccode
     * @return
     */
    private boolean resquestIsLegal(String challenge, String validate, String seccode) {

        if (objIsEmpty(challenge)) {

            return false;

        }

        if (objIsEmpty(validate)) {

            return false;

        }

        if (objIsEmpty(seccode)) {

            return false;

        }

        return true;
    }


    /**
     * 服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
     *
     * @param challenge
     * @param validate
     * @param seccode
     * @return 验证结果,1表示验证成功0表示验证失败
     */
    public int enhencedValidateRequest(String challenge, String validate, String seccode, HashMap<String, String> data) {

        if (!resquestIsLegal(challenge, validate, seccode)) {

            return 0;

        }

        gtlog("request legitimate");

        String userId = data.get("user_id");
        String clientType = data.get("client_type");
        String ipAddress = data.get("ip_address");

        String postUrl = this.apiUrl + this.validateUrl;
        String param = String.format("challenge=%s&validate=%s&seccode=%s&json_format=%s",
                challenge, validate, seccode, this.json_format);

        if (userId != null){
            param = param + "&user_id=" + userId;
        }
        if (clientType != null){
            param = param + "&client_type=" + clientType;
        }
        if (ipAddress != null){
            param = param + "&ip_address=" + ipAddress;
        }

        gtlog("param:" + param);

        String response = "";
        try {

            if (validate.length() <= 0) {

                return 0;

            }

            if (!checkResultByPrivate(challenge, validate)) {

                return 0;

            }

            gtlog("checkResultByPrivate");

            response = readContentFromPost(postUrl, param);

            gtlog("response: " + response);

        } catch (Exception e) {

            e.printStackTrace();

        }

        String return_seccode = "";

        try {

            JSONObject return_map = new JSONObject(response);
            return_seccode = return_map.getString("seccode");
            gtlog("md5: " + md5Encode(return_seccode));

            if (return_seccode.equals(md5Encode(seccode))) {

                return 1;

            } else {

                return 0;

            }

        } catch (JSONException e) {


            gtlog("json load error");
            return 0;

        }

    }

    /**
     * failback使用的验证方式
     *
     * @param challenge
     * @param validate
     * @param seccode
     * @return 验证结果,1表示验证成功0表示验证失败
     */
    public int failbackValidateRequest(String challenge, String validate, String seccode) {

        gtlog("in failback validate");

        if (!resquestIsLegal(challenge, validate, seccode)) {
            return 0;
        }
        gtlog("request legitimate");

        return 1;
    }

    /**
     * 输出debug信息,需要开启debugCode
     *
     * @param message
     */
    public void gtlog(String message) {
        if (debugCode) {
            System.out.println("gtlog: " + message);
        }
    }

    protected boolean checkResultByPrivate(String challenge, String validate) {
        String encodeStr = md5Encode(privateKey + "geetest" + challenge);
        return validate.equals(encodeStr);
    }

    /**
     * 发送GET请求,获取服务器返回结果
     * @param URL
     * @return
     * @throws IOException
     */
    private String readContentFromGet(String URL) throws IOException {

        java.net.URL getUrl = new URL(URL);
        HttpURLConnection connection = (HttpURLConnection) getUrl
                .openConnection();

        connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒)
        connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒)

        // 建立与服务器的连接,并未发送数据
        connection.connect();

        if (connection.getResponseCode() == 200) {
            // 发送数据到服务器并使用Reader读取返回的数据
            StringBuffer sBuffer = new StringBuffer();

            InputStream inStream = null;
            byte[] buf = new byte[1024];
            inStream = connection.getInputStream();
            for (int n; (n = inStream.read(buf)) != -1;) {
                sBuffer.append(new String(buf, 0, n, "UTF-8"));
            }
            inStream.close();
            connection.disconnect();// 断开连接

            return sBuffer.toString();
        }
        else {

            return "fail";
        }
    }

    /**
     * 发送POST请求,获取服务器返回结果
     * @param URL
     * @param data
     * @return
     * @throws IOException
     */
    private String readContentFromPost(String URL, String data) throws IOException {

        gtlog(data);
        URL postUrl = new URL(URL);
        HttpURLConnection connection = (HttpURLConnection) postUrl
                .openConnection();

        connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒)
        connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒)
        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        // 建立与服务器的连接,并未发送数据
        connection.connect();

        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(connection.getOutputStream(), "utf-8");
        outputStreamWriter.write(data);
        outputStreamWriter.flush();
        outputStreamWriter.close();

        if (connection.getResponseCode() == 200) {
            // 发送数据到服务器并使用Reader读取返回的数据
            StringBuffer sBuffer = new StringBuffer();

            InputStream inStream = null;
            byte[] buf = new byte[1024];
            inStream = connection.getInputStream();
            for (int n; (n = inStream.read(buf)) != -1;) {
                sBuffer.append(new String(buf, 0, n, "UTF-8"));
            }
            inStream.close();
            connection.disconnect();// 断开连接

            return sBuffer.toString();
        }
        else {

            return "fail";
        }
    }

    /**
     * md5 加密
     *
     * @time 2014年7月10日 下午3:30:01
     * @param plainText
     * @return
     */
    private String md5Encode(String plainText) {
        String re_md5 = new String();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0){
                    i += 256;
                }

                if (i < 16){
                    buf.append("0");
                }
                buf.append(Integer.toHexString(i));
            }

            re_md5 = buf.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return re_md5;
    }

}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/persistence/BaseMapper.java
================================================
package com.yuu.ymall.commons.persistence;


import java.util.List;

/**
 * 所有数据访问层的基类
 *
 * @Classname BaseMapper
 * @Date 2019/5/22 11:14
 * @Created by Yuu
 */
public interface BaseMapper<T> {

    /**
     * 新增
     *
     * @param record 对象
     * @return
     */
    int insert(T record);

    /**
     * 根据主键 id 查询
     *
     * @param id
     * @return
     */
    T selectByPrimaryKey(Long id);

    /**
     * 查询所有数据
     *
     * @return
     */
    List<T> selectAll();

    /**
     * 根据主键 id 更新
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(T record);
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/redis/RedisCacheManager.java
================================================
package com.yuu.ymall.commons.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 缓存管理
 *
 * @author by Yuu
 * @classname RegisCacheManager
 * @date 2019/6/26 8:23
 */
@Component
public class RedisCacheManager {
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 指定缓存失效时间
     *
     * @param key 键
     * @param time 失效时间
     * @return
     */
    public boolean expire(String key, long time) {
        try {
            if (time > 0) {
                redisTemplate.expire(key, time, TimeUnit.SECONDS);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 根据 key 获取过期时间
     *
     * @param key 键
     * @return
     */
    public long getExpire(String key) {
        return redisTemplate.getExpire(key);
    }

    /**
     * 判断 key 是否存在
     *
     * @param key 键
     * @return
     */
    public boolean hasKey(String key) {
        try {
            return redisTemplate.hasKey(key);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 删除缓存
     *
     * @param key 键
     */
    public boolean del(String... key) {
        try {
            if (key != null && key.length > 0) {
                if (key.length == 1) {
                    redisTemplate.delete(key[0]);
                } else {
                    redisTemplate.delete(CollectionUtils.arrayToList(key));
                }
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 普通缓存获取
     *
     * @param key 键
     * @return
     */
    public Object get(String key) {
        return key == null ? null : redisTemplate.opsForValue().get(key);
    }

    /**
     * 普通缓存放入
     *
     * @param key 键
     * @param value 值
     * @return
     */
    public boolean set(String key, Object value) {
        try {
            redisTemplate.opsForValue().set(key, value);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 普通缓存放入并设置时间
     * time 要大于 0,如果 time 小于等于 0 ,将设置无限期
     *
     *
     * @param key
     * @param value
     * @param time
     * @return
     */
    public boolean set(String key, Object value, long time) {
        try {
            if (time > 0) {
                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
            }  else{
                set(key, value);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 存放单个 Hash
     *
     * @param key Redis key
     * @param hashKey Hash key
     * @param hashValue Hash value
     * @return
     */
    public boolean setHash(String key, String hashKey, String hashValue) {
        try {
            redisTemplate.opsForHash().put(key, hashKey, hashValue);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 存放 HashMap 值
     *
     * @param key redis key
     * @param hashKey hash key
     * @param hashValue hash value
     * @return
     */
    public boolean setHashMap(String key, HashMap hashMap) {
        try {
            redisTemplate.opsForHash().putAll(key, hashMap);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 判断 Hash Key 是否存在
     *
     * @param key Redis 缓存 key
     * @param field Hash key
     * @return
     */
    public boolean hasHashKye(String key, String field) {
        try {
            return redisTemplate.opsForHash().hasKey(key, field);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 获取 Hash 值
     *
     * @param key Redis 缓存 key
     * @param field Hash key
     * @return
     */
    public Object getHash(String key, String field) {
        return key == null || field == null ? null : redisTemplate.opsForHash().get(key, field);
    }

    /**
     * 根据 Redis key, 获取 Hash
     * @param key
     * @return
     */
    public Map<String, Object> getHashByKey(String key) {
        return key == null ? null : redisTemplate.opsForHash().entries(key);
    }

    /**
     * 删除 Hash
     *
     * @param key redis key
     * @param field hash key
     * @return
     */
    public boolean deleteHash(String key, String field) {
        try {
            redisTemplate.opsForHash().delete(key, field);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/EsUtil.java
================================================
package com.yuu.ymall.commons.utils;

import org.springframework.stereotype.Component;

/**
 * ElasticSearch 客户端连接工具
 *
 * @author by Yuu
 * @classname EsUtil
 * @date 2019/6/29 17:51
 */
@Component
public class EsUtil {


}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/HttpUtil.java
================================================
package com.yuu.ymall.commons.utils;

import org.apache.http.HttpEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.Arrays;

/**
 *
 * @Classname HttpUtil
 * @Date 2019/5/13 17:01
 * @Created by Yuu
 */
public class HttpUtil {

    public static final String GET = "get";
    public static final String POST = "post";

    public static final String REQUEST_HEADER_CONNECTION = "keep-alive";
    public static final String REQUEST_HEADER_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36";

    /**
     * GET 请求
     *
     * @param url 请求地址
     * @return
     */
    public static String doGet(String url) {
        return createRequest(url, GET, null);
    }

    /**
     * GET 请求
     *
     * @param url    请求地址
     * @param cookie cookie
     * @return
     */
    public static String doGet(String url, String cookie) {
        return createRequest(url, GET, cookie);
    }

    /**
     * POST 请求
     *
     * @param url    请求地址
     * @param params 请求参数(可选)
     * @return
     */
    public static String doPost(String url, BasicNameValuePair... params) {
        return createRequest(url, POST, null, params);
    }

    /**
     * POST 请求
     *
     * @param url    请求地址
     * @param cookie cookie
     * @param params 请求参数(可选)
     * @return
     */
    public static String doPost(String url, String cookie, BasicNameValuePair... params) {
        return createRequest(url, POST, cookie, params);
    }

    /**
     * 创建请求
     *
     * @param url           请求地址
     * @param requestMethod 请求方式 GET/POST
     * @param cookie        cookie
     * @param params        请求参数 仅限于 POST 请求用
     * @return
     */
    private static String createRequest(String url, String requestMethod, String cookie, BasicNameValuePair... params) {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        String result = null;

        try {
            // 请求结果
            result = null;

            // 请求方式
            HttpGet httpGet = null;
            HttpPost httpPost = null;

            // 响应
            CloseableHttpResponse httpResponse = null;

            // GET 请求
            if (GET.equals(requestMethod)) {
                httpGet = new HttpGet(url);
                httpGet.setHeader("Connection", REQUEST_HEADER_CONNECTION);
                httpGet.setHeader("Cookie", cookie);
                httpGet.setHeader("User-Agent", REQUEST_HEADER_USER_AGENT);

                httpResponse = httpClient.execute(httpGet);
            }

            // POST 请求
            else if (POST.equals(requestMethod)) {
                httpPost = new HttpPost(url);
                httpPost.setHeader("Connection", REQUEST_HEADER_CONNECTION);
                httpPost.setHeader("Cookie", cookie);
                httpPost.setHeader("User-Agent", REQUEST_HEADER_USER_AGENT);

                // 有参数进来
                if (params != null && params.length > 0) {
                    httpPost.setEntity(new UrlEncodedFormEntity(Arrays.asList(params), "UTF-8"));
                }

                httpResponse = httpClient.execute(httpPost);
            }

            HttpEntity httpEntity = httpResponse.getEntity();
            result = EntityUtils.toString(httpEntity);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (httpClient != null) {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return result;
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/IDUtil.java
================================================
package com.yuu.ymall.commons.utils;

import java.util.Random;

/**
 * @Classname IDUtil
 * @Date 2019/6/5 23:46
 * @Created by Yuu
 */
public class IDUtil {

    /**
     * 随机 id 生成
     *
     * @return
     */
    public static Long getRandomId() {
        Long millis = System.currentTimeMillis();
        // 加上两位随机数
        Random random = new Random();
        int end = random.nextInt(99);
        // 如果不足两位前面补 0
        String str = millis + String.format("%02d", end);
        Long id = new Long(str);
        return id;
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/MapperUtil.java
================================================
package com.yuu.ymall.commons.utils;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * JSON 转换工具类
 *
 * @Classname MapperUtil
 * @Date 2019/5/13 19:46
 * @Created by Yuu
 */
public class MapperUtil {
    private final static ObjectMapper objectMapper = new ObjectMapper();

    public static ObjectMapper getInstance() {
        return objectMapper;
    }

    /**
     * 转换为 JSON 字符串
     *
     * @param obj
     * @return
     * @throws Exception
     */
    public static String obj2json(Object obj) throws Exception {
        return objectMapper.writeValueAsString(obj);
    }

    /**
     * 转换为 JSON 字符串,忽略空值
     *
     * @param obj
     * @return
     * @throws Exception
     */
    public static String obj2jsonIgnoreNull(Object obj) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        return mapper.writeValueAsString(obj);
    }

    /**
     * 转换为 JavaBean
     *
     * @param jsonString
     * @param clazz
     * @return
     * @throws Exception
     */
    public static <T> T json2pojo(String jsonString, Class<T> clazz) throws Exception {
        objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
        return objectMapper.readValue(jsonString, clazz);
    }

    /**
     * 将指定节点的 JSON 数据转换为 JavaBean
     *
     * @param jsonString
     * @param clazz
     * @return
     * @throws Exception
     */
    public static <T> T json2pojoByTree(String jsonString, String treeNode, Class<T> clazz) throws Exception {
        JsonNode jsonNode = objectMapper.readTree(jsonString);
        JsonNode data = jsonNode.findPath(treeNode);
        return json2pojo(data.toString(), clazz);
    }

    /**
     * 字符串转换为 Map<String, Object>
     *
     * @param jsonString
     * @return
     * @throws Exception
     */
    public static <T> Map<String, Object> json2map(String jsonString) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        return mapper.readValue(jsonString, Map.class);
    }

    /**
     * 字符串转换为 Map<String, T>
     */
    public static <T> Map<String, T> json2map(String jsonString, Class<T> clazz) throws Exception {
        Map<String, Map<String, Object>> map = objectMapper.readValue(jsonString, new TypeReference<Map<String, T>>() {
        });
        Map<String, T> result = new HashMap<String, T>();
        for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
            result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
        }
        return result;
    }

    /**
     * 深度转换 JSON 成 Map
     *
     * @param json
     * @return
     */
    public static Map<String, Object> json2mapDeeply(String json) throws Exception {
        return json2MapRecursion(json, objectMapper);
    }

    /**
     * 把 JSON 解析成 List,如果 List 内部的元素存在 jsonString,继续解析
     *
     * @param json
     * @param mapper 解析工具
     * @return
     * @throws Exception
     */
    private static List<Object> json2ListRecursion(String json, ObjectMapper mapper) throws Exception {
        if (json == null) {
            return null;
        }

        List<Object> list = mapper.readValue(json, List.class);

        for (Object obj : list) {
            if (obj != null && obj instanceof String) {
                String str = (String) obj;
                if (str.startsWith("[")) {
                    obj = json2ListRecursion(str, mapper);
                } else if (obj.toString().startsWith("{")) {
                    obj = json2MapRecursion(str, mapper);
                }
            }
        }

        return list;
    }

    /**
     * 把 JSON 解析成 Map,如果 Map 内部的 Value 存在 jsonString,继续解析
     *
     * @param json
     * @param mapper
     * @return
     * @throws Exception
     */
    private static Map<String, Object> json2MapRecursion(String json, ObjectMapper mapper) throws Exception {
        if (json == null) {
            return null;
        }

        Map<String, Object> map = mapper.readValue(json, Map.class);

        for (Map.Entry<String, Object> entry : map.entrySet()) {
            Object obj = entry.getValue();
            if (obj != null && obj instanceof String) {
                String str = ((String) obj);

                if (str.startsWith("[")) {
                    List<?> list = json2ListRecursion(str, mapper);
                    map.put(entry.getKey(), list);
                } else if (str.startsWith("{")) {
                    Map<String, Object> mapRecursion = json2MapRecursion(str, mapper);
                    map.put(entry.getKey(), mapRecursion);
                }
            }
        }

        return map;
    }

    /**
     * 将 JSON 数组转换为集合
     *
     * @param jsonArrayStr
     * @param clazz
     * @return
     * @throws Exception
     */
    public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
        JavaType javaType = getCollectionType(ArrayList.class, clazz);
        List<T> list = (List<T>) objectMapper.readValue(jsonArrayStr, javaType);
        return list;
    }

    /**
     * 将指定节点的 JSON 数组转换为集合
     * @param jsonStr JSON 字符串
     * @param treeNode 查找 JSON 中的节点
     * @return
     * @throws Exception
     */
    public static <T> List<T> json2listByTree(String jsonStr, String treeNode, Class<T> clazz) throws  Exception {
        JsonNode jsonNode = objectMapper.readTree(jsonStr);
        JsonNode data = jsonNode.findPath(treeNode);
        return json2list(data.toString(), clazz);
    }

    /**
     * 获取泛型的 Collection Type
     *
     * @param collectionClass 泛型的Collection
     * @param elementClasses  元素类
     * @return JavaType Java类型
     * @since 1.0
     */
    public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
        return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }

    /**
     * 将 Map 转换为 JavaBean
     *
     * @param map
     * @param clazz
     * @return
     */
    public static <T> T map2pojo(Map map, Class<T> clazz) {
        return objectMapper.convertValue(map, clazz);
    }

    /**
     * 将 Map 转换为 JSON
     *
     * @param map
     * @return
     */
    public static String mapToJson(Map map) {
        try {
            return objectMapper.writeValueAsString(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 将 JSON 对象转换为 JavaBean
     *
     * @param obj
     * @param clazz
     * @return
     */
    public static <T> T obj2pojo(Object obj, Class<T> clazz) {
        return objectMapper.convertValue(obj, clazz);
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/SendSmsUtil.java
================================================
package com.yuu.ymall.commons.utils;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;

/**
 * @author by Yuu
 * @classname SendSmsUtil
 * @date 2019/6/24 9:06
 */
public class SendSmsUtil {

    /**
     * 阿里云短信 accesskey_id
     */
    private static final String ACCESSKEYID = "LTAIF9a6WQp8ubSP";

    /**
     * 阿里云短信 secret
     */
    private static final String SECRET = "VL5pg3reFZcWckwS9uwyCy5XP64Yll";

    /**
     * 阿里云短信签名名称
     */
    private static final String SIGNNAME = "YMall";

    /**
     * 阿里云短信模板Code
     */
    private static final String TEMPLATECODE = "SMS_168592535";

    /**
     * 阿里云短信模板变量对应的实际值,JSON 格式
     */
    private static final String TEMPLATEPARAM = "{\"code\":\"123\"}";

    /**
     * 发送短信
     *
     * @param phone 手机号
     * @return
     */
    public static String sendSms(String phone) {
        DefaultProfile profile = DefaultProfile.getProfile("default", ACCESSKEYID, SECRET);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", SIGNNAME);
        request.putQueryParameter("TemplateCode", TEMPLATECODE);
        String numeric = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
        request.putQueryParameter("TemplateParam", "{\"code\":\""+ numeric +"\"}");
        String result = "";
        try {
            CommonResponse response = client.getCommonResponse(request);
            result = response.getData();
            System.out.println(result);
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return numeric;
    }
}


================================================
FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/TimeUtil.java
================================================
package com.yuu.ymall.commons.utils;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 时间工具类
 *
 * @author by Yuu
 * @classname TimeUtil
 * @date 2019/6/21 13:26
 */
public class TimeUtil {

    /**
     * 获取本周的开始时间
     *
     * @return
     */
    public static Date getBeginDayOfWeek() {
        Date date = new Date();
        if (date == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
        if (dayofweek == 1) {
            dayofweek += 7;
        }
        cal.add(Calendar.DATE, 2 - dayofweek);
        return getDayStartTime(cal.getTime());
    }

    /**
     * 获取本周的结束时间
     *
     * @return
     */
    public static Date getEndDayOfWeek(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(getBeginDayOfWeek());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        Date weekEndSta = cal.getTime();
        return getDayEndTime(weekEndSta);
    }

    /**
     * 获取本月的开始时间
     *
     * @return
     */
    public static Date getBeginDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(getNowYear(), getNowMonth() - 1, 1);
        return getDayStartTime(calendar.getTime());
    }

    /**
     * 获取本月的结束时间
     *
     * @return
     */
    public static Date getEndDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(getNowYear(), getNowMonth() - 1, 1);
        int day = calendar.getActualMaximum(5);
        calendar.set(getNowYear(), getNowMonth() - 1, day);
        return getDayEndTime(calendar.getTime());
    }

    /**
     * 获取上个月的开始时间
     *
     * @return
     */
    public static Date getBeginDayOfLastMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(getNowYear(), getNowMonth() - 2, 1);
        return getDayStartTime(calendar.getTime());
    }

    /**
     * 获取上个月的结束时间
     *
     * @return
     */
    public static Date getEndDayOfLastMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(getNowYear(), getNowMonth() - 2, 1);
        int day = calendar.getActualMaximum(5);
        calendar.set(getNowYear(), getNowMonth() - 2, day);
        return getDayEndTime(calendar.getTime());
    }

    /**
     * 获取本年的开始时间
     *
     * @return
     */
    public static Date getBeginDayOfYear(Integer year) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        // cal.set
        cal.set(Calendar.MONTH, Calendar.JANUARY);
        cal.set(Calendar.DATE, 1);

        return getDayStartTime(cal.getTime());
    }

    /**
     * 获取本年的结束时间
     *
     * @return
     */
    public static Date getEndDayOfYear(Integer year) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, Calendar.DECEMBER);
        cal.set(Calendar.DATE, 31);
        return getDayEndTime(cal.getTime());
    }

    /**
     * 获取某个日期的开始时间
     *
     * @param d
     * @return
     */
    public static Timestamp getDayStartTime(Date d) {
        Calendar calendar = Calendar.getInstance();
        if(null != d){
            calendar.setTime(d);
        }
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return new Timestamp(calendar.getTimeInMillis());
    }

    /**
     * 获取某个日期的结束时间
     *
     * @param d
     * @return
     */
    public static Timestamp getDayEndTime(Date d) {
        Calendar calendar = Calendar.getInstance();
        if(null != d) {
            calendar.setTime(d);
        }
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return new Timestamp(calendar.getTimeInMillis());
    }

    /**
     * 获取今年是哪一年
     *
     * @return
     */
    public static Integer getNowYear() {
        Date date = new Date();
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        return Integer.valueOf(gc.get(1));
    }

    /**
     * 获取本月是哪一月
     *
     * @return
     */
    public static int getNowMonth() {
        Date date = new Date();
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        return gc.get(2) + 1;
    }
}


================================================
FILE: ymall-dependencies/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.yuu</groupId>
        <artifactId>ymall</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>ymall-dependencies</artifactId>
    <packaging>pom</packaging>

    <name>ymall-dependencies</name>
    <description>Unified Dependency Management</description>

    <properties>
        <!-- 环境配置 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>

        <!-- 统一的依赖管理 -->
        <alibaba-druid.version>1.1.6</alibaba-druid.version>
        <aliyun-sms.version>4.1.0</aliyun-sms.version>
        <alipay.version>3.7.110.ALL</alipay.version>
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <commons-logging.version>1.1.1</commons-logging.version>
        <commons-io.version>1.3.2</commons-io.version>
        <commons-net.version>3.3</commons-net.version>
        <commons-fileupload.version>1.3.3</commons-fileupload.version>
        <elasticsearch.version>5.6.2</elasticsearch.version>
        <freemarker.version>2.3.23</freemarker.version>
        <httpclient.version>4.5.3</httpclient.version>
        <hutool.version>4.0.5</hutool.version>
        <jackson.version>2.9.1</jackson.version>
        <javassist.version>3.21.0-GA</javassist.version>
        <jedis.version>2.9.0</jedis.version>
        <jstl.version>1.2</jstl.version>
        <json.version>20171018</json.version>
        <joda-time.version>2.9.9</joda-time.version>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <log4j-core.version>2.9.1</log4j-core.version>
        <lombok.version>1.16.18</lombok.version>
        <mail.version>1.5.0-b01</mail.version>
        <mybaits-spring.version>1.3.1</mybaits-spring.version>
        <mybatis.version>3.4.5</mybatis.version>
        <mysql.version>5.1.44</mysql.version>
        <mybatis-paginator.version>1.2.15</mybatis-paginator.version>
        <pagehelper.version>4.1.6</pagehelper.version>
        <qiniuyun.version>7.2.0</qiniuyun.version>
        <quartz.version>2.2.3</quartz.version>
        <servlet-api.version>3.1.0</servlet-api.version>
        <slf4j.version>1.8.0-alpha2</slf4j.version>
        <spring.version>5.0.4.RELEASE</spring.version>
        <spring-data-redis.version>1.8.22.RELEASE</spring-data-redis.version>
        <spring-data-elasticsearch.version>3.0.5.RELEASE</spring-data-elasticsearch.version>
        <shiro.version>1.4.0</shiro.version>
        <swegger2.version>2.9.2</swegger2.version>
        <thymeleaf.version>3.0.5.RELEASE</thymeleaf.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Test Begin -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- Test End -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>

            <!-- joda-time Begin -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>
            <!-- joda-time End -->

            <!-- Apache Begin -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons-net.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${commons-logging.version}</version>
            </dependency>
            <!-- Apache End -->

            <!-- Jackson Begin -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- Jackson End -->

            <!-- HttpClient Begin -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <!-- HttpClient End -->

            <!-- Log Begin -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <!-- Log End -->

            <!-- Database Begin -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${alibaba-druid.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybaits-spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.miemiedev</groupId>
                <artifactId>mybatis-paginator</artifactId>
                <version>${mybatis-paginator.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- Database End -->

            <!-- Spring Begin -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- Spring End -->

            <!-- Servlet Begin -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <!-- Servlet End -->

            <!-- Redis Begin -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>${spring-data-redis.version}</version>
            </dependency>
            <!-- Redis End -->

            <!-- Freemarker Begin -->
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
            <!-- Freemarker End -->

            <!-- Javassist Begin -->
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>${javassist.version}</version>
            </dependency>
            <!-- Javassist End -->

            <!-- Elasticsearch Begin-->
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>${elasticsearch.version}</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>${elasticsearch.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-elasticsearch</artifactId>
                <version>${spring-data-elasticsearch.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.elasticsearch.plugin</groupId>
                        <artifactId>transport-netty3-clientn</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- Elasticsearch End -->

            <!-- Shiro Begin -->
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-all</artifactId>
                <version>${shiro.version}</version>
            </dependency>
            <!-- Shiro End -->

            <!--Mail Begin -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>${json.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>${mail.version}</version>
            </dependency>
            <!-- Mail End -->

            <!-- Hutool Begin -->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <!-- Hutool End -->

            <!-- Json Begin -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>${json.version}</version>
            </dependency>
            <!-- Json End -->

            <!-- Thymeleaf Begin -->
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring4</artifactId>
                <version>${thymeleaf.version}</version>
            </dependency>
            <!-- Thymeleaf End -->

            <!-- Lombok Begin -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
            <!-- Lombok End -->

            <!-- Swagger2 Begin -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swegger2.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swegger2.version}</version>
            </dependency>
            <!-- Swagger2 End -->

            <!-- QiNiuYun Begin -->
            <dependency>
                <groupId>com.qiniu</groupId>
                <artifactId>qiniu-java-sdk</artifactId>
                <version>${qiniuyun.version}</version>
            </dependency>
            <!-- QiNiuYun End -->

            <!-- AliYun SMS Begin -->
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-core</artifactId>
                <version>${aliyun-sms.version}</version>
            </dependency>
            <!-- AliYun SMS End-->

            <!-- AliPay Begin -->
            <dependency>
                <groupId>com.alipay.sdk</groupId>
                <artifactId>alipay-sdk-java</artifactId>
                <version>${alipay.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alipay</groupId>
                <artifactId>alipay-trade-sdk</artifactId>
                <version>20161215</version>
            </dependency>
            <!-- AliPay End -->

            <!-- Quartz Begin -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${quartz.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- Quartz End -->

        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- Compiler 插件, 设定 JDK 版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <showWarnings>true</showWarnings>
                    <compilerArguments>
                        <extdirs>${project.basedir}/src/main/webapp/lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>

            <!-- Maven 解决依赖无法下载插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>install-external-alipay</id>
                        <!-- 触发时机:执行 mvn clean 命令时自动触发插件 -->
                        <phase>clean</phase>
                        <configuration>
                            <!-- 存放依赖文件的位置 -->
                            <file>${project.basedir}/libs/alipay-trade-sdk-20161215.jar</file>
                            <repositoryLayout>default</repositoryLayout>
                            <!-- 自定义 groupId -->
                            <groupId>com.alibaba</groupId>
                            <!-- 自定义 artifactId -->
                            <artifactId>alipay-trade-sdk</artifactId>
                            <!-- 自定义版本号 -->
                            <version>20161215</version>
                            <!-- 打包方式 -->
                            <packaging>jar</packaging>
                            <!-- 是否自动生成 POM -->
                            <generatePom>true</generatePom>
                        </configuration>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <!-- 资源文件配置 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>
</project>


================================================
FILE: ymall-domain/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.yuu</groupId>
        <artifactId>ymall-dependencies</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../ymall-dependencies/pom.xml</relativePath>
    </parent>

    <artifactId>ymall-domain</artifactId>
    <packaging>jar</packaging>

    <name>ymall-domain</name>
    <description>Domain Model</description>

    <dependencies>
        <dependency>
            <groupId>com.yuu</groupId>
            <artifactId>ymall-commons</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
    </dependencies>
</project>

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbAddress.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 地址实体
 */
@Data
public class TbAddress implements Serializable {
    /**
     * 地址 id
     */
    private Long id;

    /**
     * 用户 id
     */
    private Long userId;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 电话
     */
    private String tel;

    /**
     * 省份
     */
    private String state;

    /**
     * 城市
     */
    private String city;

    /**
     * 区/县
     */
    private String district;

    /**
     * 街道地址
     */
    private String streetName;

    /**
     * 是否为默认地址
     */
    private Boolean isDefault;

    /**
     * 创建日期
     */
    private Date created;

    /**
     * 更新日期
     */
    private Date updated;

    /**
     * 详细地址
     */
    private String detailsAddress;
}


================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbExpress.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 快递实体
 */
@Data
public class TbExpress implements Serializable {
    /**
     * 快递 id
     */
    private Integer id;

    /**
     * 快递名称
     */
    private String expressName;

    /**
     * 排列序号
     */
    private Integer sortOrder;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItem.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 商品实体
 */
@Data
public class TbItem implements Serializable {
    /**
     * 商品 id
     */
    private Long id;

    /**
     * 商品标题
     */
    private String title;

    /**
     * 商品卖点
     */
    private String sellPoint;

    /**
     * 商品价格
     */
    private BigDecimal price;

    /**
     * 商品库存
     */
    private Integer num;

    /**
     * 一次最多购买多少件
     */
    private Integer limitNum;

    /**
     * 商品图片
     */
    private String image;

    /**
     * 商品分类 id
     */
    private Long cid;

    /**
     * 商品状态
     */
    private Integer status;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

    /**
     * 获取图片地址数组
     *
     * @return
     */
    public String[] getImages() {
        if (!StringUtils.isBlank(this.image)) {
            String[] images = this.image.split(",");
            return images;
        }
        return null;
    }

}


================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemCat.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 商品类目实体
 */
@Data
public class TbItemCat implements Serializable {
    /**
     * 类目 id
     */
    private Long id;

    /**
     * 父分类 ID = 0 代表一级根分类
      */
    private Long parentId;

    /**
     * 分类名称
     */
    private String name;

    /**
     * 分类状态
     */
    private Integer status;

    /**
     * 排列序号
     */
    private Integer sortOrder;

    /**
     * 是否为父分类 1 为 true 0 为 false
     */
    private Boolean isParent;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemDesc.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 商品描述实体
 */
@Data
public class TbItemDesc implements Serializable {
    /**
     * 商品 id
     */
    private Long itemId;

    /**
     * 商品描述信息
     */
    private String itemDesc;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;
}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbMember.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 会员实体
 */
@Data
public class TbMember implements Serializable {
    /**
     * 会员 id
     */
    private Long id;

    /**
     * 会员用户名
     */
    private String username;

    /**
     * 会员密码
     */
    private String password;

    /**
     * 会员手机号
     */
    private String phone;

    /**
     * 会员邮箱
     */
    private String email;

    /**
     * 会员性别
     */
    private String sex;

    /**
     * 会员状态
     */
    private Integer state;

    /**
     * 会员头像
     */
    private String file;

    /**
     * 会员描述
     */
    private String description;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

    /**
     * 前台登录 Token
     */
    private String token;
}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrder.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单实体
 */
@Data
public class TbOrder implements Serializable {
    /**
     * 订单 id
     */
    private String id;

    /**
     * 实付金额
     */
    private BigDecimal payment;

    /**
     * 支付类型 1 在线支付 2 货到付款
     */
    private Integer paymentType;

    /**
     * 邮费
     */
    private BigDecimal postFee;

    /**
     * 0 未付款
     * 1 已付款
     * 2 未发货
     * 3 已发货
     * 4 交易成功
     * 5 交易关闭
     * 6 交易失败
     */
    private Integer status;

    /**
     * 付款时间
     */
    private Date paymentTime;

    /**
     * 发货时间
     */
    private Date consignTime;

    /**
     * 交易完成时间
     */
    private Date endTime;

    /**
     * 交易关闭时间
     */
    private Date closeTime;

    /**
     * 物流名称
     */
    private String shippingName;

    /**
     * 物流单号
     */
    private String shippingCode;

    /**
     * 用户 id
     */
    private Long userId;

    /**
     * 买家留言
     */
    private String buyerMessage;

    /**
     * 买家昵称
     */
    private String buyerNick;

    /**
     * 买家是否已经评论
     */
    private Boolean buyerComment;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderItem.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 订单项实体
 */
@Data
public class TbOrderItem implements Serializable {
    /**
     * 订单项 id
     */
    private String id;

    /**
     * 商品 id
     */
    private String itemId;

    /**
     * 订单 id
     */
    private String orderId;

    /**
     * 商品购买数量
     */
    private Integer num;

    /**
     * 商品标题
     */
    private String title;

    /**
     * 商品单价
     */
    private BigDecimal price;

    /**
     * 商品总金额
     */
    private BigDecimal totalFee;

    /**
     * 商品图片地址
     */
    private String picPath;

    /**
     * 本周卖出总数
     */
    private Integer total;

}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderShipping.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 订单物流信息实体
 */
@Data
public class TbOrderShipping implements Serializable {
    /**
     * 订单物流 id
     */
    private String orderId;

    /**
     * 收货人全名
     */
    private String receiverName;

    /**
     * 固定电话
     */
    private String receiverPhone;

    /**
     * 移动电话
     */
    private String receiverMobile;

    /**
     * 省份
     */
    private String receiverProvince;

    /**
     * 城市
     */
    private String receiverCity;

    /**
     * 区/县
     */
    private String receiverDistrict;

    /**
     * 收获地址
     */
    private String receiverAddress;

    /**
     * 邮政编码
     */
    private String receiverZip;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;
}

================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanel.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 板块实体
 */
@Data
public class TbPanel implements Serializable {
    /**
     * 板块 id
     */
    private Integer id;

    /**
     * 板块名称
     */
    private String name;

    /**
     * 板块类型 0 轮播图 1 板块种类一 2  板块种类二 3 板块种类三
     */
    private Integer type;

    /**
     * 排列序号
     */
    private Integer sortOrder;

    /**
     * 所属位置 0 首页 1 商品推荐 2 我要捐赠
     */
    private Integer position;

    /**
     * 板块限制商品数量
     */
    private Integer limitNum;

    /**
     * 板块状态
     */
    private Integer status;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

}


================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanelContent.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 板块内容实体
 */
@Data
public class TbPanelContent implements Serializable {
    /**
     * 板块内容 id
     */
    private Integer id;

    /**
     * 所属板块 id
     */
    private Integer panelId;

    /**
     * 板块内容类型 0 关联商品 1 其他链接
     */
    private Integer type;

    /**
     * 关联商品 id
     */
    private Long productId;

    /**
     * 排列序号
     */
    private Integer sortOrder;

    /**
     * 其它链接
     */
    private String fullUrl;

    /**
     * 图片地址
     */
    private String picUrl;

    /**
     * 3d 轮播图备用1
     */
    private String picUrl2;

    /**
     * 3d 轮播图备用2
     */
    private String picUrl3;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;

    /**
     * 关联商品价格
     */
    private BigDecimal salePrice;

    /**
     * 关联商品名称
     */
    private String productName;

    /**
     * 关联商品标题
     */
    private String subTitle;

}


================================================
FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbUser.java
================================================
package com.yuu.ymall.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户实体
 */
@Data
public class TbUser implements Serializable {
    /**
     * 用户 id
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户密码
     */
    private String password;

    /**
     * 创建时间
     */
    private Date created;

    /**
     * 更新时间
     */
    private Date updated;
}

================================================
FILE: ymall-web-admin/.rebel.xml.bak
================================================
<?xml version="1.0" encoding="UTF-8"?>

<!--
  This is the JRebel configuration file. It maps the running application to your IDE workspace, enabling JRebel reloading for this project.
  Refer to https://manuals.zeroturnaround.com/jrebel/standalone/config.html for more information.
-->
<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd">

	<classpath>
		<dir name="C:/workspace/project/ymall-manager/target/classes">
		</dir>
	</classpath>

	<web>
		<link target="/">
			<dir name="C:/workspace/project/ymall-manager/src/main/webapp">
			</dir>
		</link>
	</web>

</application>


================================================
FILE: ymall-web-admin/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.yuu</groupId>
        <artifactId>ymall-dependencies</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../ymall-dependencies/pom.xml</relativePath>
    </parent>

    <artifactId>ymall-web-admin</artifactId>
    <packaging>war</packaging>

    <name>ymall-web-admin</name>
    <description>Back Admin Management</description>

    <dependencies>

        <!-- Database Begin -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.miemiedev</groupId>
            <artifactId>mybatis-paginator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>
        <!-- Database End -->

        <!-- Project Begin -->
        <dependency>
            <groupId>com.yuu</groupId>
            <artifactId>ymall-commons</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.yuu</groupId>
            <artifactId>ymall-domain</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <!-- Project End -->

        <!-- Spring Begin -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <!-- Spring End -->

        <!-- Servlet Begin -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- Servlet End -->

        <!-- Shiro Begin -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-all</artifactId>
        </dependency>
        <!-- Shiro End -->

        <!-- Swagger2 Begin -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>
        <!-- Swagger2 End -->

        <!-- QiNiuYun Begin -->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
        </dependency>
        <!-- QiNiuYun End -->

        <!-- Hutool Begin -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>
        <!-- Hutool End -->
    </dependencies>

    <build>
        <plugins>
            <!-- MyBatis Generator Plugin -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>${mysql.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/consts/Consts.java
================================================
package com.yuu.ymall.web.admin.commons.consts;

/**
 * 常量类
 *
 * @Classname Consts
 * @Date 2019/6/15 20:13
 * @Created by Yuu
 */
public class Consts {

    /**
     * ####### 订单状态
     */

    /**
     * 订单未付款
     */
    public static final Integer ORDER_STATE_UNPAID = 0;
    
    /**
     * 订单已付款
     */
    public static final Integer ORDER_STATE_PAID = 1;
    
    /**
     * 订单未发货
     */
    public static final Integer ORDER_STATE_UNSHIPPED = 2;
 
    /**
     * 订单已发货
     */
    public static final Integer ORDER_STATE_SHIPPED = 3;
 
    /**
     * 订单交易成功
     */
    public static final Integer ORDER_STATE_SUCCESS = 4;
 
    /**
     * 订单交易关闭
     */
    public static final Integer ORDER_STATE_CLOSE = 5;

    /**
     * 交易失败
     */
    public static final Integer ORDER_STATE_FAILED = 6;


    /**
     * ######### 会员状态
     */

    /**
     * 会员启用,正常状态
     */
    public static final Integer MEMBER_START = 1;

    /**
     * 会员被封禁
     */
    public static final Integer MEMBER_BAN = 2;


    /**
     * ######### 报表统计
     */

    /**
     * 自定义查询报表
     */
    public static final Integer CUSTOM_DATE = -1;

    /**
     * 按年统计
     */
    public static final Integer CUSTOM_YEAR = -2;

    /**
     * 本周
     */
    public static final Integer THIS_WEEK = 0;

    /**
     * 本月
     */
    public static final Integer THIS_MONTH = 1;

    /**
     * 上个月
     */
    public static final Integer LAST_MONTH = 2;
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ChartData.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import java.io.Serializable;
import java.util.List;

/**
 * EChart 数据传输对象
 *
 * @author by Yuu
 * @classname ChartData
 * @date 2019/6/21 11:00
 */
public class ChartData implements Serializable {

    /**
     * x 轴数据
     */
    private List<Object> xDatas;

    /**
     * y 轴数据
     */
    private List<Object> yDatas;

    /**
     * 总计
     */
    private Object countAll;

    public List<Object> getxDatas() {
        return xDatas;
    }

    public void setxDatas(List<Object> xDatas) {
        this.xDatas = xDatas;
    }

    public List<Object> getyDatas() {
        return yDatas;
    }

    public void setyDatas(List<Object> yDatas) {
        this.yDatas = yDatas;
    }

    public Object getCountAll() {
        return countAll;
    }

    public void setCountAll(Object countAll) {
        this.countAll = countAll;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/City.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.io.Serializable;

/**
 * @Classname City
 * @Date 2019/5/13 19:43
 * @Created by Yuu
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class City implements Serializable {

    /**
     * 城市
     */
    String city;

    /**
     * 区域
     */
    String distrct;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getDistrct() {
        return distrct;
    }

    public void setDistrct(String distrct) {
        this.distrct = distrct;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/DataTablesResult.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import lombok.Getter;
import lombok.Setter;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;

/**
 * 分页展示对象
 *
 * @Classname PageInfo
 * @Date 2019/5/16 23:53
 * @Created by Yuu
 */
@Setter
@Getter
public class DataTablesResult<T> implements Serializable {
    private int draw;
    private int recordsTotal;
    private int recordsFiltered;
    private List<T> data;
    private String error;
    private int start = 0;
    private int length = 10;
    private int pageNum = 1;

    /**
     * 初始化 DataTables 数据
     * @param request
     */
    public DataTablesResult(HttpServletRequest request) {
        String strDraw = request.getParameter("draw");
        String strStart = request.getParameter("start");
        String strLength = request.getParameter("length");

        this.draw = strDraw == null ? 0 : Integer.parseInt(strDraw);
        this.start = strStart == null ? 0 : Integer.parseInt(strStart);
        this.length = strLength == null ? 10 : Integer.parseInt(strLength);

        // 计算页面
        this.pageNum = start/length + 1;
    }

}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/IpWeatherResult.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.io.Serializable;
import java.util.List;

/**
 * @Classname IpWeatherResult
 * @Date 2019/5/13 19:42
 * @Created by Yuu
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class IpWeatherResult implements Serializable {

    /**
     * 消息
     */
    String msg;

    /**
     * 返回数据
     */
    List<City> result;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<City> getResult() {
        return result;
    }

    public void setResult(List<City> result) {
        this.result = result;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ItemDto.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import com.yuu.ymall.domain.TbItem;
import lombok.Data;

/**
 * @Classname ItemDto
 * @Date 2019/6/5 23:19
 * @Created by Yuu
 */
@Data
public class ItemDto extends TbItem {
    /**
     * 商品描述
     */
    private String detail;

    /**
     * 商品分类名称
     */
    private String cname;
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderChartData.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单统计数据传输对象
 *
 * @author by Yuu
 * @classname OrderChartData
 * @date 2019/6/21 11:31
 */
public class OrderChartData implements Serializable {

    /**
     * 日期
     */
    Date time;

    /**
     * 总销量
     */
    BigDecimal money;

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public BigDecimal getMoney() {
        return money;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderDetail.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import com.yuu.ymall.domain.TbOrder;
import com.yuu.ymall.domain.TbOrderItem;
import com.yuu.ymall.domain.TbOrderShipping;

import java.io.Serializable;
import java.util.List;

/**
 * 订单详情
 *
 * @Classname OrderDetail
 * @Date 2019/6/14 22:09
 * @Created by Yuu
 */
public class OrderDetail implements Serializable {

    /**
     * 订单信息
     */
    private TbOrder tbOrder;

    /**
     * 订单项集合
     */
    private List<TbOrderItem> tbOrderItemList;

    /**
     * 订单收货信息
     */
    private TbOrderShipping tbOrderShipping;

    public TbOrder getTbOrder() {
        return tbOrder;
    }

    public void setTbOrder(TbOrder tbOrder) {
        this.tbOrder = tbOrder;
    }

    public List<TbOrderItem> getTbOrderItemList() {
        return tbOrderItemList;
    }

    public void setTbOrderItemList(List<TbOrderItem> tbOrderItemList) {
        this.tbOrderItemList = tbOrderItemList;
    }

    public TbOrderShipping getTbOrderShipping() {
        return tbOrderShipping;
    }

    public void setTbOrderShipping(TbOrderShipping tbOrderShipping) {
        this.tbOrderShipping = tbOrderShipping;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ZTreeNode.java
================================================
package com.yuu.ymall.web.admin.commons.dto;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * @Classname ZTreeNode
 * @Date 2019/5/20 8:48
 * @Created by Yuu
 */
@Getter
@Setter
public class ZTreeNode implements Serializable {

    private int id;

    private int pId;

    private String name;

    private Boolean isParent;

    private Boolean open;

    private String icon;

    private int status;

    private int sortOrder;

    private String remark;

    /**
     * 板块限制商品数量
     */
    private int limitNum;

    /**
     * 板块类型
     */
    private int type;

}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/es/ESItem.java
================================================
package com.yuu.ymall.web.admin.commons.es;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

/**
 * Elasticsearch 对应实体类
 *
 * @author by Yuu
 * @classname ESItem
 * @date 2019/6/29 21:39
 */
@Document(indexName = "item", type = "itemList", shards = 1, replicas = 0)
public class ESItem {
    /**
     * 商品 ID
     */
    @Id
    private Long id;

    /**
     * 商品名称
     */
    @Field(type = FieldType.text, analyzer = "ik_max_word")
    private String productName;

    /**
     * 商品副标题
     */
    @Field(type = FieldType.text, analyzer = "ik_max_word")
    private String subTitle;

    /**
     * 商品 id
     */
    @Field(type = FieldType.Long)
    private Long productId;

    /**
     * 分类 id
     */
    @Field(type = FieldType.Long)
    private Long cid;

    /**
     * 商品售价
     */
    @Field(type = FieldType.Double)
    private Double salePrice;

    /**
     * 商品大图 1 张
     */
    @Field(type = FieldType.keyword)
    private String picUrl;

    /**
     * 商品销量
     */
    @Field(type = FieldType.Integer)
    private Integer orderNum;

    /**
     * 商品限制购买数量
     */
    @Field(type = FieldType.Integer)
    private Integer limit;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getSubTitle() {
        return subTitle;
    }

    public void setSubTitle(String subTitle) {
        this.subTitle = subTitle;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getCid() {
        return cid;
    }

    public void setCid(Long cid) {
        this.cid = cid;
    }

    public Double getSalePrice() {
        return salePrice;
    }

    public void setSalePrice(Double salePrice) {
        this.salePrice = salePrice;
    }

    public String getPicUrl() {
        return picUrl;
    }

    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/shiro/MyRealm.java
================================================
package com.yuu.ymall.web.admin.commons.shiro;

import com.yuu.ymall.domain.TbUser;
import com.yuu.ymall.web.admin.service.UserService;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @Classname MyRealm
 * @Date 2019/5/11 18:47
 * @Created by Yuu
 */
public class MyRealm extends AuthorizingRealm {

    @Autowired
    private UserService userService;


    /**
     * 先执行登录验证
     *
     * @param authenticationToken
     * @return
     * @throws AuthenticationException
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        // 获取用户名密码
        String username = authenticationToken.getPrincipal().toString();
        TbUser tbUser = userService.getUserByUsername(username);
        if (tbUser != null) {
            // 得到用户账号和密码存放到 authenticationInfo 用于 Controller 层的权限判断,第三个参数随意不能为空
            AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(tbUser.getUsername(), tbUser.getPassword(),
                    tbUser.getUsername());
            return authenticationInfo;
        }
        return null;
    }

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/swagger/SwaggerConfiguration.java
================================================
package com.yuu.ymall.web.admin.commons.swagger;

import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Classname Swagger2Confinguration
 * @Date 2019/5/12 11:33
 * @Created by Yuu
 */
@Configuration  // 让 Spring 来加载该配置类
@EnableWebMvc   // 非 Spring Boot 需启用
@EnableSwagger2 // 启用 Swagger2
@ComponentScan(basePackages = "com.yuu.ymall.web.admin.web.controller")
public class SwaggerConfiguration {

    public static final Logger log = LoggerFactory.getLogger(SwaggerConfiguration.class);

    @Bean
    public Docket createRestApi() {
        log.info("开始加载Swagger2...");
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                // 扫描指定包中的 swagger 注解
                //.apis(RequestHandlerSelectors.basePackage("com.yuu.ymall.controller.admin.controller"))
                // 扫描所有有注解的 api,用这种方式更灵活
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("YMall API Documentation")
                .description("YMall 商城管理后台API接口")
                .termsOfServiceUrl("https://www.71yuu.com")
                .contact(new Contact("Yuu", "https://www.71yuu.com", "1225459207@qq.com"))
                .version("1.0.0")
                .build();
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/DtoUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import com.yuu.ymall.domain.TbItemCat;
import com.yuu.ymall.domain.TbPanel;
import com.yuu.ymall.web.admin.commons.dto.ZTreeNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @Classname DtoUtil
 * @Date 2019/5/20 9:21
 * @Created by Yuu
 */
public class DtoUtil {

    private final static Logger log = LoggerFactory.getLogger(DtoUtil.class);

    /**
     * 板块类目封装 ZTreeNode 对象
     *
     * @param tbPanel 板块类目
     * @return
     */
    public static ZTreeNode TbPanel2ZTreeNode(TbPanel tbPanel) {
        ZTreeNode zTreeNode = new ZTreeNode();
        zTreeNode.setId(tbPanel.getId());
        zTreeNode.setIsParent(false);
        zTreeNode.setPId(0);
        zTreeNode.setName(tbPanel.getName());
        zTreeNode.setSortOrder(tbPanel.getSortOrder());
        zTreeNode.setStatus(tbPanel.getStatus());
        zTreeNode.setLimitNum(tbPanel.getLimitNum());
        zTreeNode.setType(tbPanel.getType());
        return zTreeNode;
    }


    /**
     * 商品分类封装 ZTreeNode 对象
     *
     * @param tbItemCat 商品分类
     * @return
     */
    public static ZTreeNode TbItemCat2ZTreeNode(TbItemCat tbItemCat) {
        ZTreeNode zTreeNode = new ZTreeNode();
        zTreeNode.setId(Math.toIntExact(tbItemCat.getId()));
        zTreeNode.setStatus(tbItemCat.getStatus());
        zTreeNode.setSortOrder(tbItemCat.getSortOrder());
        zTreeNode.setName(tbItemCat.getName());
        zTreeNode.setPId(Math.toIntExact(tbItemCat.getParentId()));
        zTreeNode.setIsParent(tbItemCat.getIsParent());
        return zTreeNode;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IDUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import java.util.Random;

/**
 * @Classname IDUtil
 * @Date 2019/6/5 23:46
 * @Created by Yuu
 */
public class IDUtil {

    /**
     * 随机 id 生成
     *
     * @return
     */
    public static Long getRandomId() {
        Long millis = System.currentTimeMillis();
        // 加上两位随机数
        Random random = new Random();
        int end = random.nextInt(99);
        // 如果不足两位前面补 0
        String str = millis + String.format("%02d", end);
        Long id = new Long(str);
        return id;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IPInfoUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import com.yuu.ymall.commons.utils.HttpUtil;
import com.yuu.ymall.commons.utils.MapperUtil;
import com.yuu.ymall.web.admin.commons.dto.IpWeatherResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * IP 信息工具类
 *
 * @Classname IPInfoUtil
 * @Date 2019/5/13 14:09
 * @Created by Yuu
 */
public class IPInfoUtil {

    private static final Logger log = LoggerFactory.getLogger(IPInfoUtil.class);

    /**
     * Mob全国天气预报接口
     */
    private final static String GET_WEATHER="http://apicloud.mob.com/v1/weather/ip?key=2b1e8ccdabd32&ip=";

    /**
     * 获取客户端 IP 地址
     *
     * @param request 请求
     * @return
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
            if (ip.equals("127.0.0.1")) {
                //根据网卡取本机配置的IP
                InetAddress inet = null;
                try {
                    inet = InetAddress.getLocalHost();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }
                ip = inet.getHostAddress();
            }
        }
        // 对于通过多个代理的情况下,第一个 IP 为客户端真实 IP ,多个 IP 按照‘,’分割
        if (ip != null && ip.length() > 15) {
            if (ip.indexOf(",") > 0) {
                ip = ip.substring(0, ip.indexOf(","));
            }
        }
        if("0:0:0:0:0:0:0:1".equals(ip)){
            ip="127.0.0.1";
        }
        return ip;
    }

    /**
     * 获取 IP 返回天气
     * @param ip ip 地址
     * @return
     */
    public static String getIpInfo(String ip) {
        if (null != ip) {
            String url = GET_WEATHER + ip;
            String result = HttpUtil.doGet(url);
            return result;
        }
        return null;
    }

    /**
     * 获取 IP 返回地理信息
     *
     * @param ip ip 地址
     * @return
     */
    public static String getIpCity(String ip) {
        if (ip != null) {
            String url = GET_WEATHER + ip;
            String json = HttpUtil.doGet(url);
            IpWeatherResult weather = null;
            String result = "未知";
            try {
                weather = MapperUtil.json2pojo(json, IpWeatherResult.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            result = weather.getResult().get(0).getCity() + " " + weather.getResult().get(0).getDistrct();
            return result;
        }
        return null;
    }

    public static void main(String[] args) {
        log.info(getIpInfo("192.168.23.1"));
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ObjectUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import com.google.common.collect.Maps;
import com.yuu.ymall.commons.utils.MapperUtil;
import org.springframework.cglib.beans.BeanMap;

import java.util.HashMap;
import java.util.Map;

/**
 * @Classname ObjectUtil
 * @Date 2019/5/13 16:26
 * @Created by Yuu
 */
public class ObjectUtil {

    /**
     * Bean 转 Map
     * @param bean
     * @param <T>
     * @return
     */
    public static <T> Map<String, Object> beanToMap(T bean) {
        Map<String, Object> map = Maps.newHashMap();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                map.put(key+"", beanMap.get(key));
            }
        }
        return map;
    }

    public static String mapToStringAll(Map<String, String[]> paramMap) throws Exception {
        if (paramMap == null) {
            return "";
        }
        Map<String, Object> params = new HashMap<>(16);
        for (Map.Entry<String, String[]> param : paramMap.entrySet()) {
            String key = param.getKey();
            String paramValue = (param.getValue() != null && param.getValue().length > 0 ? param.getValue()[0] : "");
            params.put(key, paramValue);
        }
        return MapperUtil.obj2json(params);
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/QiniuUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.util.UrlSafeBase64;
import com.yuu.ymall.commons.execption.YmallUploadException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;

/**
 * 七牛云图片上传工具类
 * @Classname QiniuUtil
 * @Date 2019/5/24 20:38
 * @Created by Yuu
 */
public class QiniuUtil {

    private final static Logger log = LoggerFactory.getLogger(QiniuUtil.class);

    /**
     * 生成上传凭证,然后准备上传
     */
    private static String accessKey = "1v01i-JOwyKIbxFKhrDj6YfwRREUR47W_nh0sSEh";
    private static String secretKey = "mFmbgY9JehH9ovJvPXQMajMWJv5feqNXaXi9_r6B";
    private static String bucket = "ymall";
    private static String origin = "http://pub7lsomw.bkt.clouddn.com/";
    private static Auth auth = Auth.create(accessKey, secretKey);

    /**
     * 普通方式上传
     * @param filePath
     * @return
     */
    public static String qiniuUpload(String filePath){

        //构造一个带指定Zone对象的配置类 zone2华南
        Configuration cfg = new Configuration(Zone.zone2());

        UploadManager uploadManager = new UploadManager(cfg);

        String localFilePath = filePath;
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);

        try {
            Response response = uploadManager.put(localFilePath, key, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            return origin + putRet.key;
        }catch(QiniuException ex){
            Response r = ex.response;
            log.warn(r.toString());
            try {
                return r.bodyString();
            } catch (QiniuException e) {
                throw new YmallUploadException(e.toString());
            }
        }
    }

    /**
     * 文件流上传
     * @param file
     * @param key 文件名
     * @return
     */
    public static String qiniuInputStreamUpload(FileInputStream file, String key){

        //构造一个带指定Zone对象的配置类 zone2华南
        Configuration cfg = new Configuration(Zone.zone2());

        UploadManager uploadManager = new UploadManager(cfg);

        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);

        try {
            Response response = uploadManager.put(file,key,upToken,null, null);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            return origin+putRet.key;
        } catch (QiniuException ex) {
            Response r = ex.response;
            log.warn(r.toString());
            try {
                return r.bodyString();
            } catch (QiniuException e) {
                throw new YmallUploadException(e.toString());
            }
        }
    }

    public static String getUpToken() {
        return auth.uploadToken(bucket, null, 3600, new StringMap().put("insertOnly", 1));
    }

    public static String qiniuBase64Upload(String data64){

        String key = renamePic(".png");
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        //服务端http://up-z2.qiniup.com
        String url = "http://up-z2.qiniup.com/putb64/-1/key/"+ UrlSafeBase64.encodeToString(key);
        RequestBody rb = RequestBody.create(null, data64);
        Request request = new Request.Builder().
                url(url).
                addHeader("Content-Type", "application/octet-stream")
                .addHeader("Authorization", "UpToken " + getUpToken())
                .post(rb).build();
        OkHttpClient client = new OkHttpClient();
        okhttp3.Response response = null;
        try {
            response = client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return origin+key;
    }

    public static String base64Data(String data){

        if(data==null||data.isEmpty()){
            return "";
        }
        String base64 =data.substring(data.lastIndexOf(",")+1);
        return base64;
    }

    /**
     * 以时间戳重命名
     * @param fileName
     * @return
     */
    public static String renamePic(String fileName){
        String extName = fileName.substring(fileName.lastIndexOf("."));
        return System.currentTimeMillis()+extName;
    }

    public static String isValidImage(HttpServletRequest request, MultipartFile file){
        //最大文件大小
        long maxSize = 5242880;
        //定义允许上传的文件扩展名
        HashMap<String, String> extMap = new HashMap<String, String>();
        extMap.put("image", "gif,jpg,jpeg,png,bmp");

        if(!ServletFileUpload.isMultipartContent(request)){
            return "请选择文件";
        }

        if(file.getSize() > maxSize){
            return "上传文件大小超过5MB限制";
        }
        //检查扩展名
        String fileName=file.getOriginalFilename();
        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        if(!Arrays.<String>asList(extMap.get("image").split(",")).contains(fileExt)){
            return "上传文件扩展名是不允许的扩展名\n只允许" + extMap.get("image") + "格式";
        }

        return "valid";
    }

    public static String checkExt(String fileName,String dirName){
        //定义允许上传的文件扩展名
        HashMap<String, String> extMap = new HashMap<String, String>();
        extMap.put("image", "gif,jpg,jpeg,png,bmp");
        extMap.put("flash", "swf,flv");
        extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");

        //检查扩展名
        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
            return "上传文件扩展名是不允许的扩展名\n只允许" + extMap.get(dirName) + "格式";
        }
        return "valid";
    }

    public static void main(String[] args){
        base64Data("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2");
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ThreadPoolUtil.java
================================================
package com.yuu.ymall.web.admin.commons.utils;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * 线程池工具类
 *
 * @Classname ThreadPoolUtil
 * @Date 2019/5/13 16:43
 * @Created by Yuu
 */
public class ThreadPoolUtil {

    //线程缓冲队列
    private static BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(100);
    // 核心线程数,会一直存活,即使没有任务,线程池也会维护线程的最少数量
    private static final int SIZE_CORE_POOL = 5;
    // 线程池维护线程的最大数量
    private static final int SIZE_MAX_POOL = 10;
    // 线程池维护线程所允许的空闲时间
    private static final long ALIVE_TIME = 2000;

    private static ThreadPoolExecutor pool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL, ALIVE_TIME, TimeUnit.MILLISECONDS, bqueue, new ThreadPoolExecutor.CallerRunsPolicy());
    static {
        pool.prestartAllCoreThreads();
    }

    public static ThreadPoolExecutor getPool() {
        return pool;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbAddressMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbAddress;

public interface TbAddressMapper extends BaseMapper<TbAddress> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbExpressMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbExpress;

import java.util.List;
import java.util.Map;

public interface TbExpressMapper extends BaseMapper<TbExpress> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 获取快递列表
     *
     * @param params 参数
     * @return
     */
    List<TbExpress> getExpressList(Map<String, Object> params);

    /**
     * 获取快递总数
     *
     * @param params 参数
     * @return
     */
    int getTbExpressCount(Map<String, Object> params);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemCatMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbItemCat;

import java.util.List;

public interface TbItemCatMapper extends BaseMapper<TbItemCat> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 根据父 ID 查询分类列表
     *
     * @param parentId 父 id
     * @return
     */
    List<TbItemCat> getItemCatList(Long parentId);

    /**
     * 查询该分类最大的排序值
     *
     * @param parentId 父 id
     * @return
     */
    int getMaxSortOrder(Long parentId);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemDescMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbItemDesc;

public interface TbItemDescMapper extends BaseMapper<TbItemDesc> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbItem;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface TbItemMapper extends BaseMapper<TbItem> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 获取商品总数
     *
     * @return
     */
    int getAllItemCount();

    /**
     * 有条件的查询商品集合
     * @param cid 分类 id
     * @return
     */
    List<TbItem> selectItemByCondition(@Param("cid") Long cid, @Param("search") String search);

    /**
     * 根据分类 id 查询商品集合
     *
     * @param params 查询条件
     * @return
     */
    List<TbItem> getItemByCid(Map<String, Object> params);

    /**
     * 查询分类商品总数
     *
     * @param params 查询条件
     * @return
     */
    int getTbItemByCidCount(Map<String, Object> params);

    /**
     * 下架商品
     *
     * @param id 商品 id
     */
    int stopItemById(Long id);

    /**
     * 发布商品
     *
     * @param id 商品 id
     */
    int startItemById(Long id);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbMemberMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbMember;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbMemberMapper extends BaseMapper<TbMember> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 获取会员总数
     *
     * @return
     */
    int getAllMemberCount();

    /**
     * 获取会员列表
     *
     * @param search 查询条件
     * @return
     */
    List<TbMember> getMemberList(@Param("search") String search);

    /**
     * 获取会员列表总数
     *
     * @param search 查询条件
     * @return
     */
    int getMemberListCount(@Param("search") String search);

    /**
     * 根据会员名查询会员
     *
     * @param username 会员名
     * @return
     */
    TbMember getMemberByUsername(String username);

    /**
     * 根据手机号查询会员
     *
     * @param phone 手机号
     * @return
     */
    TbMember getMemberByPhone(String phone);

    /**
     * 根据邮箱查询会员
     *
     * @param email 邮箱
     * @return
     */
    TbMember getMemberByEmail(String email);

    /**
     * 获取被封禁的会员列表
     *
     * @param search 搜索条件
     * @return
     */
    List<TbMember> getMemberBanList(@Param("search") String search);

    /**
     * 获取被封禁的会员总数
     *
     * @param search 搜索条件
     * @return
     */
    int getMemberBanListCount(@Param("search") String search);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderItemMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbOrderItem;

import java.util.List;

public interface TbOrderItemMapper extends BaseMapper<TbOrderItem> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(String id);

    /**
     * 获取本周热门商品
     *
     * @return
     */
    List<TbOrderItem> getWeekHot();

    /**
     * 查看商品是否有订单项
     *
     * @param id 商品 id
     * @return
     */
    int selectByItemId(Long id);

    /**
     * 根据订单 id,查询所有订单项
     *
     * @param id 订单 id
     * @return
     */
    List<TbOrderItem> selectOrderItemByOrderId(String orderId);

    /**
     * 查询该商品订单数量
     *
     * @param itemId 商品 id
     * @return
     */
    int selectOrderNumByItemId(Long itemId);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbOrder;
import com.yuu.ymall.web.admin.commons.dto.OrderChartData;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface TbOrderMapper extends BaseMapper<TbOrder> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(String id);

    /**
     * 根据主键 id 查询
     *
     * @param id
     * @return
     */
    TbOrder selectByPrimaryKey(String id);


    /**
     * 获取订单总数
     *
     * @return
     */
    int getAllOrderCount();

    /**
     * 获取订单列表
     *
     * @param params 参数
     * @return
     */
    List<TbOrder> getOrderList(Map<String, Object> params);

    /**
     * 获取订单列表数量
     *
     * @param params 参数
     * @return
     */
    int getTbOrderCount(Map<String, Object> params);


    /**
     * 查询图表数据
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    List<OrderChartData> selectOrderChart(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 按年份查询图表数据
     *
     * @param year 年份
     * @return
     */
    List<OrderChartData> selectOrderChartByYear(int year);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderShippingMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbOrderShipping;

public interface TbOrderShippingMapper extends BaseMapper<TbOrderShipping> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(String id);

    /**
     * 根据主键 id 查询
     *
     * @param id
     * @return
     */
    TbOrderShipping selectByPrimaryKey(String id);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelContentMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbPanelContent;

import java.util.List;
import java.util.Map;

public interface TbPanelContentMapper extends BaseMapper<TbPanelContent> {

    /**
     * 根据主键 id 删除数据
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);

    /**
     *  添加查询板块内容
     * @param params 参数
     * @return
     */
    List<TbPanelContent> getTbPanelContentByPanelId(Map<String, Object> params);


    /**
     * 条件查询板块内容总数目
     * @param params 查询参数
     * @return
     */
    int getTbPanelContentCount(Map<String, Object> params);

    /**
     * 根据商品 ID 查询商品是否关联首页内容
     * @param id 商品 id
     * @return
     */
    int selectContentByIid(Long id);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbPanel;

import java.util.List;
import java.util.Map;

public interface TbPanelMapper extends BaseMapper<TbPanel> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 根据条件查询所有板块
     *
     * @param params
     * @return
     */
    List<TbPanel> getPanelList(Map<String, Object> params);

    /**
     * 根据板块的类型查询板块
     *
     * @param type
     * @return
     */
    TbPanel getPanelByType(int type);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbUserMapper.java
================================================
package com.yuu.ymall.web.admin.mapper;

import com.yuu.ymall.commons.persistence.BaseMapper;
import com.yuu.ymall.domain.TbUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbUserMapper extends BaseMapper<TbUser> {

    /**
     * 根据主键 id 删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 根据用户名获取用户
     *
     * @param username 用户名
     * @return
     */
    TbUser getUserByUsername(String username);

    /**
     * 获取用户列表
     *
     * @param search 搜索条件
     * @return
     */
    List<TbUser> getUserList(@Param("search") String search);

    /**
     * 获取用户总数
     *
     * @param search 搜索条件
     * @return
     */
    int getUserListCount(@Param("search") String search);

    /**
     * 根据手机号获取用户
     *
     * @param phone 手机号
     * @return
     */
    TbUser getUserByPhone(String phone);

    /**
     * 根据邮箱获取用户
     *
     * @param email 邮箱
     * @return
     */
    TbUser getUserByEmail(String email);
}

================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/repositories/ItemRepository.java
================================================
package com.yuu.ymall.web.admin.repositories;

import com.yuu.ymall.web.admin.commons.es.ESItem;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/**
 * @author by Yuu
 * @classname ItemRepository
 * @date 2019/7/9 19:51
 */
public interface ItemRepository extends ElasticsearchRepository<ESItem, Long> {
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ContentService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbPanelContent;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname ContentService
 * @Date 2019/5/16 23:52
 * @Created by Yuu
 */
public interface ContentService {


    /**
     * 通过板块 id 分页查询板块内容
     *
     * @param request 请求
     * @param panelId 板块 id
     * @param search 搜索条件
     * @return
     */
    DataTablesResult<TbPanelContent> getPanelContentListByPanelId(HttpServletRequest request, int panelId, String search);

    /**
     * 删除板块内容
     *
     * @param id 板块内容 id 集合
     * @return
     */
    BaseResult deletePanelContent(int[] ids);

    /**
     * 新增或编辑板块内容
     *
     * @param tbPanelContent 板块内容
     * @return
     */
    BaseResult saveContent(TbPanelContent tbPanelContent);

    /**
     * 查询商品是否关联首页板块内容
     *
     * @param id 商品 id
     */
    int selectContentByIid(Long id);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/CountService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;

/**
 * @author by Yuu
 * @classname CountService
 * @date 2019/6/21 11:03
 */
public interface CountService {

    /**
     * 订单销量统计
     *
     * @param type 类型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param year 年份
     * @return
     */
    BaseResult countOrder(int type, String startTime, String endTime, int year);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ExpressService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbExpress;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname ExpressService
 * @Date 2019/6/15 18:59
 * @Created by Yuu
 */
public interface ExpressService {

    /**
     * 获取快递列表
     *
     * @param request 请求
     * @param search 搜索参数
     * @return
     */
    DataTablesResult<TbExpress> getExpressList(HttpServletRequest request, String search);

    /**
     * 保存快递
     *
     * @param tbExpress 快递
     * @return
     */
    BaseResult save(TbExpress tbExpress);

    /**
     * 删除快递
     * @param ids
     * @return
     */
    BaseResult delete(Integer[] ids);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemCatService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbItemCat;
import com.yuu.ymall.web.admin.commons.dto.ZTreeNode;

import java.util.List;

/**
 * @Classname ItemCatService
 * @Date 2019/6/3 14:52
 * @Created by Yuu
 */
public interface ItemCatService {

    /**
     * 根据父类 id 查询分类列表
     *
     * @param parentId 根据父类 id 查询分类列表
     * @param type zTree 展示数据类型 -1 不展示所有商品,0 展示所有商品
     * @return
     */
    List<ZTreeNode> getItemCatList(Long parentId, int type);

    /**
     * 添加编辑商品分类
     *
     * @param tbItemCat 商品分类
     * @return
     */
    BaseResult saveItemCat(TbItemCat tbItemCat);

    /**
     * 删除商品分类
     *
     * @param id 分类 id
     * @return
     */
    BaseResult deleteItemCat(Long id);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbItem;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;
import com.yuu.ymall.web.admin.commons.dto.ItemDto;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname ItemService
 * @Date 2019/5/15 22:28
 * @Created by Yuu
 */
public interface ItemService {

    /**
     * 获取商品总数
     * @return
     */
    int getAllItemCount();


    /**
     * 分页搜索排序获取商品列表
     *
     * @param request 请求
     * @param cid 分类 id
     * @param search 查询条件
     * @return
     */
    DataTablesResult<TbItem> getItemListByCid(HttpServletRequest request, Long cid, String search);

    /**
     * 根据商品 id 集合,删除商品
     *
     * @param ids 商品 id 集合
     * @return
     */
    BaseResult deleteItem(Long[] ids);

    /**
     * 根据商品 id 下架商品
     *
     * @param id 商品 id
     * @return
     */
    BaseResult stopItem(Long id);

    /**
     * 根据商品 id 发布商品
     *
     * @param id 商品 id
     * @return
     */
    BaseResult startItem(Long id);

    /**
     * 保存商品:有 id 编辑商品,无 id 新增商品
     *
     * @param itemDto 商品 DTO
     * @return
     */
    BaseResult saveItem(ItemDto itemDto);

    /**
     * 根据商品 ID 获取商品
     *
     * @param itemId 商品 ID
     * @return
     */
    BaseResult getItemById(Long itemId);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/MemberService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbMember;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname MemberService
 * @Date 2019/5/15 22:12
 * @Created by Yuu
 */
public interface MemberService {
    /**
     * 获取会员总数
     *
     * @return
     */
    int getAllMemberCount();

    /**
     * 获取会员列表
     *
     * @param request 请求
     * @param search 搜索条件
     * @return
     */
    DataTablesResult<TbMember> getMemberList(HttpServletRequest request, String search);

    /**
     * 封禁会员
     *
     * @param id 会员 id
     * @return
     */
    BaseResult banMember(Long id);

    /**
     * 解封会员
     *
     * @param id 会员 id 集合
     * @return
     */
    BaseResult startMember(Long[] ids);

    /**
     * 保存会员
     *
     * @param tbMember 会员
     * @return
     */
    BaseResult saveMember(TbMember tbMember);

    /**
     * 根据会员名获取会员
     *
     * @param username 会员名
     * @param  id 会员 id
     * @return
     */
    Boolean getMemberByUsername(String username, Long id);

    /**
     * 根据手机号获取会员
     *
     * @param phone 手机号
     * @param id 会员 id
     * @return
     */
    Boolean getMemberByPhone(String phone, Long id);

    /**
     * 根据邮箱获取会员
     *
     * @param email 邮箱
     * @param id 会员 id
     * @return
     */
    Boolean getMemberByEmail(String email, Long id);

    /**
     * 修改会员密码
     *
     * @param id 会员 id
     * @param password 会员 密码
     * @return
     */
    BaseResult changeMemberPassword(Long id, String password);

    /**
     * 删除会员
     * @param ids
     * @return
     */
    BaseResult deleteMember(Long[] ids);

    /**
     * 获取被封禁的会员列表
     *
     * @param request 请求
     * @param search 搜索条件
     * @return
     */
    DataTablesResult<TbMember> getMemberBanList(HttpServletRequest request, String search);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/OrderService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbOrder;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname OrderService
 * @Date 2019/5/15 22:35
 * @Created by Yuu
 */
public interface OrderService {

    /**
     * 获取订单总数
     *
     * @return
     */
    int getAllOrderCount();

    /**
     * 获取订单列表
     *
     * @param request 请求
     * @param search 查询条件
     * @param status 订单状态
     * @return
     */
    DataTablesResult<TbOrder> getOrderList(HttpServletRequest request, String search, int status);

    /**
     * 获取订单详情
     *
     * @param id 订单 id
     * @return
     */
    BaseResult getOrderDetail(String id);

    /**
     * 订单发货
     *
     * @param orderId 订单 id
     * @param shippingName 快递名称
     * @param shippingCode 快递单号
     * @return
     */
    BaseResult deliver(String orderId, String shippingName, String shippingCode);

    /**
     * 管理员取消订单
     *
     * @param orderId 订单id
     * @return
     */
    BaseResult cancelOrderByAdmin(String orderId);

    /**
     * 根据订单 id 集合删除订单
     *
     * @param ids 订单 id 集合
     * @return
     */
    BaseResult deleteOrderByIds(String[] ids);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/PanelService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbPanel;
import com.yuu.ymall.web.admin.commons.dto.ZTreeNode;

import java.util.List;

/**
 * @Classname PanelService
 * @Date 2019/5/20 8:54
 * @Created by Yuu
 */
public interface PanelService {

    /**
     * 获取板块类目
     *
     * @param type
     * @return
     */
    List<ZTreeNode> getPanelList(int type);

    /**
     * 编辑内容板块
     *
     * @param tbPanel 板块
     * @return
     */
    BaseResult updatePanel(TbPanel tbPanel);

    /**
     * 根据板块 id 删除板块
     *
     * @param id 板块 id
     * @return
     */
    BaseResult deletePanelById(int id);

    /**
     * 新增内容板块
     *
     * @param tbPanel 板块
     * @return
     */
    BaseResult addPanel(TbPanel tbPanel);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SearchService.java
================================================
package com.yuu.ymall.web.admin.service;

/**
 * 搜索服务
 *
 * @author by Yuu
 * @classname SearchService
 * @date 2019/7/9 19:48
 */
public interface SearchService {

    /**
     * 同步单个索引
     *
     * @param type 0 更新索引 1 删除索引
     * @param itemId 商品 id
     * @return
     */
    void refreshItem(int type, Long itemId);

    /**
     * 同步所有索引
     *
     * @return
     */
    void importAllItems();
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SystemService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;

/**
 * @Classname SystemService
 * @Date 2019/5/11 20:21
 * @Created by Yuu
 */
public interface SystemService {

    /**
     * 获取本周热销商品
     *
     * @return
     */
    BaseResult getWeekHot();
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/UserService.java
================================================
package com.yuu.ymall.web.admin.service;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbUser;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;

import javax.servlet.http.HttpServletRequest;

/**
 * @Classname UserService
 * @Date 2019/5/11 18:49
 * @author by Yuu
 */
public interface UserService {

    /**
     * 根据用户名获取用户信息
     *
     * @param username
     * @return
     */
    TbUser getUserByUsername(String username);

    /**
     * 获取用户列表
     * @param request 请求
     * @param search 搜索条件
     * @return
     */
    DataTablesResult<TbUser> getUserList(HttpServletRequest request, String search);

    /**
     * 验证用户名是否存在
     *
     * @param id 用户 id
     * @param username 用户名
     * @return
     */
    Boolean validateUsername(Long id, String username);

    /**
     * 验证手机号是否存在
     *
     * @param id 用户 id
     * @param phone 手机号
     * @return
     */
    Boolean validatePhone(Long id, String phone);

    /**
     * 验证邮箱是否存在
     *
     * @param id 用户 id
     * @param email 邮箱
     * @return
     */
    Boolean validateEmail(Long id, String email);

    /**
     * 保存用户
     *
     * @param tbUser 用户
     * @return
     */
    BaseResult save(TbUser tbUser);

    /**
     * 修改密码
     *
     * @param id 用户 id
     * @param password 用户密码
     * @return
     */
    BaseResult changePass(Long id, String password);

    /**
     * 删除用户
     *
     * @param ids 用户 id 的集合
     * @return
     */
    BaseResult delete(Long[] ids);
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ContentServiceImpl.java
================================================
package com.yuu.ymall.web.admin.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.commons.redis.RedisCacheManager;
import com.yuu.ymall.domain.TbItem;
import com.yuu.ymall.domain.TbPanelContent;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;
import com.yuu.ymall.web.admin.mapper.TbItemMapper;
import com.yuu.ymall.web.admin.mapper.TbPanelContentMapper;
import com.yuu.ymall.web.admin.service.ContentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Classname ContentServiceImpl
 * @Date 2019/5/16 23:52
 * @Created by Yuu
 */
@Service
@Transactional(readOnly = true)
public class ContentServiceImpl implements ContentService {

    @Autowired
    private TbPanelContentMapper tbPanelContentMapper;

    @Autowired
    private TbItemMapper tbItemMapper;

    @Autowired
    private RedisCacheManager redisCacheManager;

    /**
     * 首页商品缓存 key
     */
    @Value("PRODUCT_HOME")
    private String PRODUCT_HOME;

    @Value("0")
    private int HEADER_PANEL_ID;

    @Value("HEADER_PANEL")
    private String HEADER_PANEL;

    @Override
    public DataTablesResult<TbPanelContent> getPanelContentListByPanelId(HttpServletRequest request, int panelId, String search) {
        DataTablesResult<TbPanelContent> result = new DataTablesResult<>(request);

        Map<String, Object> params = new HashMap<>();
        params.put("panelId", panelId);
        params.put("search", search);

        // 分页查询
        PageHelper.startPage(result.getPageNum(), result.getLength());
        List<TbPanelContent> tbPanelContentList = tbPanelContentMapper.getTbPanelContentByPanelId(params);

        // 封装内容
        for (TbPanelContent tbPanelContent : tbPanelContentList) {
            if (tbPanelContent.getProductId() != null) {
                TbItem tbItem = tbItemMapper.selectByPrimaryKey(tbPanelContent.getProductId());
                tbPanelContent.setProductName(tbItem.getTitle());
                tbPanelContent.setSalePrice(tbItem.getPrice());
                tbPanelContent.setSubTitle(tbItem.getSellPoint());
            }
        }

        PageInfo<TbPanelContent> tbPanelContentPageInfo = new PageInfo<>(tbPanelContentList);
        result.setRecordsFiltered((int) tbPanelContentPageInfo.getTotal());
        result.setRecordsTotal(tbPanelContentMapper.getTbPanelContentCount(params));
        result.setDraw(result.getDraw());
        result.setData(tbPanelContentList);

        return result;
    }

    @Transactional(readOnly = false)
    @Override
    public BaseResult deletePanelContent(int[] ids) {
        // 删除板块内容
        int result = 0;
        for (int id : ids) {
            result = tbPanelContentMapper.deleteByPrimaryKey(id);
            if (result != 1) {
                return BaseResult.fail("删除板块内容失败!");
            }
            // 同步导航栏缓存
            if (id == HEADER_PANEL_ID) {
                updateNavListRedis();
            }
        }
        // 同步缓存
        deleteHomeRedis();
        return BaseResult.success();
    }

    @Transactional(readOnly = false)
    @Override
    public BaseResult saveContent(TbPanelContent tbPanelContent) {
        tbPanelContent.setUpdated(new Date());

        int result;

        // 新增
        if (tbPanelContent.getId() == null) {
            tbPanelContent.setCreated(new Date());
            result = tbPanelContentMapper.insert(tbPanelContent);

            if (result == 0) {
                return BaseResult.fail("添加导航栏失败!");
            }
        }

        // 编辑
        else {
            result = tbPanelContentMapper.updateByPrimaryKey(tbPanelContent);

            // 更新失败
            if (result != 1) {
                return BaseResult.fail("更新板块内容失败!");
            }
        }

        // 删除导航栏缓存
        if (tbPanelContent.getPanelId() == HEADER_PANEL_ID) {
            updateNavListRedis();
        }

        // 删除首页缓存
        deleteHomeRedis();
        return BaseResult.success("保存导航栏成功!");
    }

    @Override
    public int selectContentByIid(Long id) {
        return tbPanelContentMapper.selectContentByIid(id);
    }

    /**
     * 删除导航栏缓存
     */
    private void updateNavListRedis() {
        redisCacheManager.del(HEADER_PANEL);
    }

    /**
     * 同步缓存
     */
    private void deleteHomeRedis() {
        redisCacheManager.del(PRODUCT_HOME);
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/CountServiceImpl.java
================================================
package com.yuu.ymall.web.admin.service.impl;

import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.commons.utils.TimeUtil;
import com.yuu.ymall.web.admin.commons.consts.Consts;
import com.yuu.ymall.web.admin.commons.dto.ChartData;
import com.yuu.ymall.web.admin.commons.dto.OrderChartData;
import com.yuu.ymall.web.admin.mapper.TbOrderMapper;
import com.yuu.ymall.web.admin.service.CountService;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @author by Yuu
 * @classname CountServiceImpl
 * @date 2019/6/21 11:03
 */
@Service
public class CountServiceImpl implements CountService {

    @Autowired
    private TbOrderMapper tbOrderMapper;

    @Override
    public BaseResult countOrder(int type, String startTime, String endTime, int year) {
        ChartData chartData = new ChartData();
        Date startDate = null, endDate = null;
        if (type == Consts.CUSTOM_DATE) {
            startDate = DateUtil.beginOfDay(DateUtil.parse(startTime));
            endDate = DateUtil.endOfDay(DateUtil.parse(endTime));
            long betweenDay = DateUtil.between(startDate, endDate, DateUnit.DAY);
            if (betweenDay > 31) {
                return BaseResult.fail("所选日期范围过长,最多不能超过31天");
            }
        }
        List<OrderChartData> list = getOrderCountData(type, startDate, endDate, year);
        List<Object> xDatas = new ArrayList<>();
        List<Object> yDatas = new ArrayList<>();
        BigDecimal countAll = new BigDecimal("0");
        for (OrderChartData orderChartData : list) {
            if (type == Consts.CUSTOM_YEAR) {
                xDatas.add(DateUtil.format(orderChartData.getTime(), "yyyy-MM"));
            } else {
                xDatas.add(DateUtil.formatDate(orderChartData.getTime()));
            }
            yDatas.add(orderChartData.getMoney());
            countAll = countAll.add(orderChartData.getMoney());
        }
        chartData.setxDatas(xDatas);
        chartData.setyDatas(yDatas);
        chartData.setCountAll(countAll);
        return BaseResult.success(chartData);
    }

    private List<OrderChartData> getOrderCountData(int type, Date startTime, Date endTime, int year) {
        List<OrderChartData> fullData = new ArrayList<>();

        List<OrderChartData> data;

        switch (type) {
            // 本周
            case 0:
                data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfWeek(), TimeUtil.getEndDayOfWeek());
                fullData = getFullData(data, TimeUtil.getBeginDayOfWeek(), TimeUtil.getEndDayOfWeek());
                break;
            // 本月
            case 1:
                data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfMonth(), TimeUtil.getEndDayOfMonth());
                fullData = getFullData(data, TimeUtil.getBeginDayOfMonth(), TimeUtil.getEndDayOfMonth());
                break;
            // 上月
            case 2:
                data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfLastMonth(), TimeUtil.getEndDayOfLastMonth());
                fullData = getFullData(data, TimeUtil.getBeginDayOfLastMonth(), TimeUtil.getEndDayOfLastMonth());
                break;
            // 自定义
            case -1:
                data = tbOrderMapper.selectOrderChart(startTime, endTime);
                fullData = getFullData(data, startTime, endTime);
                break;
            // 按年份
            case -2:
                data = tbOrderMapper.selectOrderChartByYear(year);
                fullData = getFullYearData(data, year);
                break;
        }
        return fullData;
    }

    /**
     * 无数据补0
     *
     * @param data      数据
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    private List<OrderChartData> getFullData(List<OrderChartData> data, Date startTime, Date endTime) {
        List<OrderChartData> fullData = new ArrayList<>();

        // 相差
        long betweenDay = DateUtil.between(startTime, endTime, DateUnit.DAY);

        // 起始时间
        Date everyday = startTime;

        int count = -1;
        for (int i = 0; i <= betweenDay; i++) {
            boolean flag = true;
            for (OrderChartData chartData : data) {
                if (DateUtils.isSameDay(chartData.getTime(), everyday)) {
                    // 有数据
                    flag = false;
                    count++;
                    break;
                }
            }
            if (!flag) {
                fullData.add(data.get(count));
            } else {
                OrderChartData orderChartData = new OrderChartData();
                orderChartData.setTime(everyday);
                orderChartData.setMoney(new BigDecimal("0"));
                fullData.add(orderChartData);
            }

            // 时间 +1 天
            Calendar cal = Calendar.getInstance();
            cal.setTime(everyday);
            cal.add(Calendar.DAY_OF_MONTH, 1);
            everyday = cal.getTime();
        }
        return fullData;
    }

    /**
     * 无数据补0
     *
     * @param data 数据
     * @param year 年份
     * @return
     */
    public List<OrderChartData> getFullYearData(List<OrderChartData> data, int year) {

        List<OrderChartData> fullData = new ArrayList<>();
        //起始月份
        Date everyMonth = TimeUtil.getBeginDayOfYear(year);
        int count = -1;
        for (int i = 0; i < 12; i++) {
            boolean flag = true;
            for (OrderChartData chartData : data) {
                if (DateUtil.month(chartData.getTime()) == DateUtil.month(everyMonth)) {
                    //有数据
                    flag = false;
                    count++;
                    break;
                }
            }
            if (!flag) {
                fullData.add(data.get(count));
            } else {
                OrderChartData orderChartData = new OrderChartData();
                orderChartData.setTime(everyMonth);
                orderChartData.setMoney(new BigDecimal("0"));
                fullData.add(orderChartData);
            }

            //时间+1天
            Calendar cal = Calendar.getInstance();
            cal.setTime(everyMonth);
            cal.add(Calendar.MONTH, 1);
            everyMonth = cal.getTime();
        }
        return fullData;
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ExpressServiceImpl.java
================================================
package com.yuu.ymall.web.admin.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.domain.TbExpress;
import com.yuu.ymall.web.admin.commons.dto.DataTablesResult;
import com.yuu.ymall.web.admin.mapper.TbExpressMapper;
import com.yuu.ymall.web.admin.service.ExpressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Classname ExpressServiceImpl
 * @Date 2019/6/15 19:00
 * @Created by Yuu
 */
@Service
@Transactional(readOnly = true)
public class ExpressServiceImpl implements ExpressService {

    @Autowired
    private TbExpressMapper tbExpressMapper;

    @Override
    public DataTablesResult<TbExpress> getExpressList(HttpServletRequest request, String search) {
        DataTablesResult<TbExpress> result = new DataTablesResult<>(request);

        Map<String, Object> params = new HashMap<>();
        params.put("search", search);

        // 分页查询
        PageHelper.startPage(result.getPageNum(), result.getLength());
        List<TbExpress> tbExpressList = tbExpressMapper.getExpressList(params);

        // 封装 PageInfo
        PageInfo<TbExpress> tbItemPageInfo = new PageInfo<>(tbExpressList);
        result.setRecordsFiltered((int) tbItemPageInfo.getTotal());
        result.setRecordsTotal(tbExpressMapper.getTbExpressCount(params));
        result.setDraw(result.getDraw());
        result.setData(tbExpressList);

        return result;

    }

    @Transactional
    @Override
    public BaseResult save(TbExpress tbExpress) {

        // 设置更新时间
        tbExpress.setUpdated(new Date());

        // 新增
        if (tbExpress.getId() == null) {
            tbExpress.setCreated(new Date());
            tbExpressMapper.insert(tbExpress);
        }

        // 编辑
        else {
            tbExpressMapper.updateByPrimaryKey(tbExpress);
        }
        return BaseResult.success("保存物流信息成功!");
    }

    @Transactional
    @Override
    public BaseResult delete(Integer[] ids) {
        for (Integer id : ids) {
            tbExpressMapper.deleteByPrimaryKey(id);
        }
        return BaseResult.success("删除快递成功!");
    }
}


================================================
FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemCatServiceImpl.java
================================================
package com.yuu.ymall.web.admin.service.impl;

import com.yuu.ymall.commons.dto.BaseResult;
import com.yuu.ymall.commons.redis.RedisCacheManager;
import com.yuu.ymall.domain.TbItemCat;
import com.yuu.ymall.web.admin.commons.dto.ZTreeNode;
import com.yuu.ymall.web.admin.commons.utils.DtoUtil;
import com.yuu.ymall.web.admin.mapper.TbItemCatMapper;
import com.yuu.ymall.web.admin.service.ItemCatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Classname ItemCatServiceImpl
 * @Date 2019/6/3 14:53
 * @Created by Yuu
 */
@Service
@Transactional(readOnly = t
Download .txt
gitextract_igooiayh/

├── .gitattributes
├── .gitignore
├── README.md
├── pom.xml
├── sql/
│   └── ymall.sql
├── ymall-commons/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com.yuu.ymall.commons/
│                   ├── consts/
│                   │   └── Consts.java
│                   ├── dto/
│                   │   └── BaseResult.java
│                   ├── execption/
│                   │   └── YmallUploadException.java
│                   ├── geetest/
│                   │   ├── GeetInit.java
│                   │   └── GeetestLib.java
│                   ├── persistence/
│                   │   └── BaseMapper.java
│                   ├── redis/
│                   │   └── RedisCacheManager.java
│                   └── utils/
│                       ├── EsUtil.java
│                       ├── HttpUtil.java
│                       ├── IDUtil.java
│                       ├── MapperUtil.java
│                       ├── SendSmsUtil.java
│                       └── TimeUtil.java
├── ymall-dependencies/
│   ├── libs/
│   │   └── alipay-trade-sdk-20161215.jar
│   └── pom.xml
├── ymall-domain/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── yuu/
│                       └── ymall/
│                           └── domain/
│                               ├── TbAddress.java
│                               ├── TbExpress.java
│                               ├── TbItem.java
│                               ├── TbItemCat.java
│                               ├── TbItemDesc.java
│                               ├── TbMember.java
│                               ├── TbOrder.java
│                               ├── TbOrderItem.java
│                               ├── TbOrderShipping.java
│                               ├── TbPanel.java
│                               ├── TbPanelContent.java
│                               └── TbUser.java
├── ymall-web-admin/
│   ├── .rebel.xml.bak
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── yuu/
│           │           └── ymall/
│           │               └── web/
│           │                   └── admin/
│           │                       ├── commons/
│           │                       │   ├── consts/
│           │                       │   │   └── Consts.java
│           │                       │   ├── dto/
│           │                       │   │   ├── ChartData.java
│           │                       │   │   ├── City.java
│           │                       │   │   ├── DataTablesResult.java
│           │                       │   │   ├── IpWeatherResult.java
│           │                       │   │   ├── ItemDto.java
│           │                       │   │   ├── OrderChartData.java
│           │                       │   │   ├── OrderDetail.java
│           │                       │   │   └── ZTreeNode.java
│           │                       │   ├── es/
│           │                       │   │   └── ESItem.java
│           │                       │   ├── shiro/
│           │                       │   │   └── MyRealm.java
│           │                       │   ├── swagger/
│           │                       │   │   └── SwaggerConfiguration.java
│           │                       │   └── utils/
│           │                       │       ├── DtoUtil.java
│           │                       │       ├── IDUtil.java
│           │                       │       ├── IPInfoUtil.java
│           │                       │       ├── ObjectUtil.java
│           │                       │       ├── QiniuUtil.java
│           │                       │       └── ThreadPoolUtil.java
│           │                       ├── mapper/
│           │                       │   ├── TbAddressMapper.java
│           │                       │   ├── TbExpressMapper.java
│           │                       │   ├── TbItemCatMapper.java
│           │                       │   ├── TbItemDescMapper.java
│           │                       │   ├── TbItemMapper.java
│           │                       │   ├── TbMemberMapper.java
│           │                       │   ├── TbOrderItemMapper.java
│           │                       │   ├── TbOrderMapper.java
│           │                       │   ├── TbOrderShippingMapper.java
│           │                       │   ├── TbPanelContentMapper.java
│           │                       │   ├── TbPanelMapper.java
│           │                       │   └── TbUserMapper.java
│           │                       ├── repositories/
│           │                       │   └── ItemRepository.java
│           │                       ├── service/
│           │                       │   ├── ContentService.java
│           │                       │   ├── CountService.java
│           │                       │   ├── ExpressService.java
│           │                       │   ├── ItemCatService.java
│           │                       │   ├── ItemService.java
│           │                       │   ├── MemberService.java
│           │                       │   ├── OrderService.java
│           │                       │   ├── PanelService.java
│           │                       │   ├── SearchService.java
│           │                       │   ├── SystemService.java
│           │                       │   ├── UserService.java
│           │                       │   └── impl/
│           │                       │       ├── ContentServiceImpl.java
│           │                       │       ├── CountServiceImpl.java
│           │                       │       ├── ExpressServiceImpl.java
│           │                       │       ├── ItemCatServiceImpl.java
│           │                       │       ├── ItemServiceImpl.java
│           │                       │       ├── MemberServiceImpl.java
│           │                       │       ├── OrderServiceImpl.java
│           │                       │       ├── PanelServiceImpl.java
│           │                       │       ├── SearchServiceImpl.java
│           │                       │       ├── SystemServiceImpl.java
│           │                       │       └── UserServiceImpl.java
│           │                       └── web/
│           │                           ├── controller/
│           │                           │   ├── ContentController.java
│           │                           │   ├── CountController.java
│           │                           │   ├── ExpressController.java
│           │                           │   ├── ItemCatController.java
│           │                           │   ├── ItemController.java
│           │                           │   ├── MemberController.java
│           │                           │   ├── OrderController.java
│           │                           │   ├── PageController.java
│           │                           │   ├── PanelController.java
│           │                           │   ├── SwaggerController.java
│           │                           │   ├── SystemController.java
│           │                           │   ├── UploadController.java
│           │                           │   └── UserController.java
│           │                           └── interceptor/
│           │                               └── PermissionInterceptor.java
│           ├── resources/
│           │   ├── generatorConfig.xml
│           │   ├── log4j.properties
│           │   ├── mapper/
│           │   │   ├── TbAddressMapper.xml
│           │   │   ├── TbExpressMapper.xml
│           │   │   ├── TbItemCatMapper.xml
│           │   │   ├── TbItemDescMapper.xml
│           │   │   ├── TbItemMapper.xml
│           │   │   ├── TbMemberMapper.xml
│           │   │   ├── TbOrderItemMapper.xml
│           │   │   ├── TbOrderMapper.xml
│           │   │   ├── TbOrderShippingMapper.xml
│           │   │   ├── TbPanelContentMapper.xml
│           │   │   ├── TbPanelMapper.xml
│           │   │   └── TbUserMapper.xml
│           │   ├── mybatis-config.xml
│           │   ├── resource.properties
│           │   ├── spring-context-druid.xml
│           │   ├── spring-context-elasticsearch.xml
│           │   ├── spring-context-mybatis.xml
│           │   ├── spring-context-redis.xml
│           │   ├── spring-context-shiro.xml
│           │   ├── spring-context.xml
│           │   ├── spring-mvc.xml
│           │   └── ymall.properties
│           └── webapp/
│               ├── WEB-INF/
│               │   ├── includes/
│               │   │   ├── footer.jsp
│               │   │   └── header.jsp
│               │   ├── views/
│               │   │   ├── admin-form.jsp
│               │   │   ├── admin-list.jsp
│               │   │   ├── change-admin-password.jsp
│               │   │   ├── change-password.jsp
│               │   │   ├── chart-order.jsp
│               │   │   ├── choose-category.jsp
│               │   │   ├── choose-parent-category.jsp
│               │   │   ├── choose-product.jsp
│               │   │   ├── content-common-form.jsp
│               │   │   ├── content-common-list.jsp
│               │   │   ├── content-header-list.jsp
│               │   │   ├── content-panel-add.jsp
│               │   │   ├── content-panel.jsp
│               │   │   ├── index.jsp
│               │   │   ├── lock-screen.jsp
│               │   │   ├── login.jsp
│               │   │   ├── member-ban.jsp
│               │   │   ├── member-form.jsp
│               │   │   ├── member-list.jsp
│               │   │   ├── order-deliver.jsp
│               │   │   ├── order-list.jsp
│               │   │   ├── order-print.jsp
│               │   │   ├── product-category-add.jsp
│               │   │   ├── product-category.jsp
│               │   │   ├── product-form.jsp
│               │   │   ├── product-list.jsp
│               │   │   ├── system-express-form.jsp
│               │   │   ├── system-express.jsp
│               │   │   └── welcome.jsp
│               │   └── web.xml
│               └── static/
│                   └── assets/
│                       ├── app/
│                       │   ├── app.js
│                       │   ├── common.js
│                       │   ├── const.js
│                       │   └── validate.js
│                       ├── lib/
│                       │   ├── DD_belatedPNG_0.0.8a-min.js
│                       │   ├── Hui-iconfont/
│                       │   │   └── 1.0.8/
│                       │   │       ├── demo.html
│                       │   │       └── iconfont.css
│                       │   ├── My97DatePicker/
│                       │   │   └── 4.8/
│                       │   │       ├── WdatePicker.js
│                       │   │       ├── calendar.js
│                       │   │       ├── lang/
│                       │   │       │   ├── en.js
│                       │   │       │   ├── zh-cn.js
│                       │   │       │   └── zh-tw.js
│                       │   │       └── skin/
│                       │   │           ├── WdatePicker.css
│                       │   │           ├── default/
│                       │   │           │   └── datepicker.css
│                       │   │           ├── twoer/
│                       │   │           │   ├── datepicker-dev.css
│                       │   │           │   └── datepicker.css
│                       │   │           └── whyGreen/
│                       │   │               └── datepicker.css
│                       │   ├── busuanzi.pure.mini.js
│                       │   ├── changyan.js
│                       │   ├── datatables/
│                       │   │   └── Chinese.json
│                       │   ├── expressInstall.swf
│                       │   ├── flatlab/
│                       │   │   ├── assets/
│                       │   │   │   ├── font-awesome/
│                       │   │   │   │   ├── css/
│                       │   │   │   │   │   ├── font-awesome-ie7.css
│                       │   │   │   │   │   └── font-awesome.css
│                       │   │   │   │   ├── font/
│                       │   │   │   │   │   └── FontAwesome.otf
│                       │   │   │   │   ├── less/
│                       │   │   │   │   │   ├── bootstrap.less
│                       │   │   │   │   │   ├── core.less
│                       │   │   │   │   │   ├── extras.less
│                       │   │   │   │   │   ├── font-awesome-ie7.less
│                       │   │   │   │   │   ├── font-awesome.less
│                       │   │   │   │   │   ├── icons.less
│                       │   │   │   │   │   ├── mixins.less
│                       │   │   │   │   │   ├── path.less
│                       │   │   │   │   │   └── variables.less
│                       │   │   │   │   └── scss/
│                       │   │   │   │       ├── _bootstrap.scss
│                       │   │   │   │       ├── _core.scss
│                       │   │   │   │       ├── _extras.scss
│                       │   │   │   │       ├── _icons.scss
│                       │   │   │   │       ├── _mixins.scss
│                       │   │   │   │       ├── _path.scss
│                       │   │   │   │       ├── _variables.scss
│                       │   │   │   │       ├── font-awesome-ie7.scss
│                       │   │   │   │       └── font-awesome.scss
│                       │   │   │   └── jquery-easy-pie-chart/
│                       │   │   │       ├── Makefile
│                       │   │   │       ├── Readme.md
│                       │   │   │       ├── examples/
│                       │   │   │       │   ├── excanvas.js
│                       │   │   │       │   ├── index.html
│                       │   │   │       │   └── style.css
│                       │   │   │       ├── jquery.easy-pie-chart.coffee
│                       │   │   │       ├── jquery.easy-pie-chart.css
│                       │   │   │       └── jquery.easy-pie-chart.js
│                       │   │   ├── css/
│                       │   │   │   ├── bootstrap-reset.css
│                       │   │   │   ├── bootstrap.css
│                       │   │   │   ├── owl.carousel.css
│                       │   │   │   ├── style-responsive.css
│                       │   │   │   └── style.css
│                       │   │   └── js/
│                       │   │       ├── bootstrap.js
│                       │   │       ├── common-scripts.js
│                       │   │       ├── count.js
│                       │   │       ├── easy-pie-chart.js
│                       │   │       ├── html5shiv.js
│                       │   │       ├── jquery.dcjqaccordion.2.7.js
│                       │   │       ├── jquery.js
│                       │   │       ├── jquery.nicescroll.js
│                       │   │       ├── jquery.sparkline.js
│                       │   │       ├── owl.carousel.js
│                       │   │       └── sparkline-chart.js
│                       │   ├── fonts/
│                       │   │   └── FontAwesome.otf
│                       │   ├── gt.js
│                       │   ├── html5shiv.js
│                       │   ├── jQuery.print.js
│                       │   ├── jquery/
│                       │   │   └── 1.9.1/
│                       │   │       └── jquery.js
│                       │   ├── jquery.contextmenu/
│                       │   │   └── jquery.contextmenu.r2.js
│                       │   ├── jquery.validation/
│                       │   │   └── 1.14.0/
│                       │   │       ├── additional-methods.js
│                       │   │       ├── jquery.validate.js
│                       │   │       ├── messages_zh.js
│                       │   │       └── validate-methods.js
│                       │   ├── jselect-1.0.js
│                       │   ├── kindeditor/
│                       │   │   ├── kindeditor.js
│                       │   │   ├── lang/
│                       │   │   │   ├── ar.js
│                       │   │   │   ├── en.js
│                       │   │   │   ├── ko.js
│                       │   │   │   ├── ru.js
│                       │   │   │   ├── zh-CN.js
│                       │   │   │   └── zh-TW.js
│                       │   │   ├── plugins/
│                       │   │   │   ├── anchor/
│                       │   │   │   │   └── anchor.js
│                       │   │   │   ├── autoheight/
│                       │   │   │   │   └── autoheight.js
│                       │   │   │   ├── baidumap/
│                       │   │   │   │   ├── baidumap.js
│                       │   │   │   │   ├── index.html
│                       │   │   │   │   └── map.html
│                       │   │   │   ├── clearhtml/
│                       │   │   │   │   └── clearhtml.js
│                       │   │   │   ├── code/
│                       │   │   │   │   ├── code.js
│                       │   │   │   │   ├── prettify.css
│                       │   │   │   │   └── prettify.js
│                       │   │   │   ├── emoticons/
│                       │   │   │   │   └── emoticons.js
│                       │   │   │   ├── filemanager/
│                       │   │   │   │   └── filemanager.js
│                       │   │   │   ├── fixtoolbar/
│                       │   │   │   │   └── fixtoolbar.js
│                       │   │   │   ├── flash/
│                       │   │   │   │   └── flash.js
│                       │   │   │   ├── image/
│                       │   │   │   │   └── image.js
│                       │   │   │   ├── insertfile/
│                       │   │   │   │   └── insertfile.js
│                       │   │   │   ├── lineheight/
│                       │   │   │   │   └── lineheight.js
│                       │   │   │   ├── link/
│                       │   │   │   │   └── link.js
│                       │   │   │   ├── map/
│                       │   │   │   │   ├── map.html
│                       │   │   │   │   └── map.js
│                       │   │   │   ├── media/
│                       │   │   │   │   └── media.js
│                       │   │   │   ├── multiimage/
│                       │   │   │   │   ├── images/
│                       │   │   │   │   │   └── swfupload.swf
│                       │   │   │   │   └── multiimage.js
│                       │   │   │   ├── pagebreak/
│                       │   │   │   │   └── pagebreak.js
│                       │   │   │   ├── plainpaste/
│                       │   │   │   │   └── plainpaste.js
│                       │   │   │   ├── preview/
│                       │   │   │   │   └── preview.js
│                       │   │   │   ├── quickformat/
│                       │   │   │   │   └── quickformat.js
│                       │   │   │   ├── table/
│                       │   │   │   │   └── table.js
│                       │   │   │   ├── template/
│                       │   │   │   │   ├── html/
│                       │   │   │   │   │   ├── 1.html
│                       │   │   │   │   │   ├── 2.html
│                       │   │   │   │   │   └── 3.html
│                       │   │   │   │   └── template.js
│                       │   │   │   └── wordpaste/
│                       │   │   │       └── wordpaste.js
│                       │   │   └── themes/
│                       │   │       ├── default/
│                       │   │       │   └── default.css
│                       │   │       ├── qq/
│                       │   │       │   └── qq.css
│                       │   │       └── simple/
│                       │   │           └── simple.css
│                       │   ├── layer/
│                       │   │   └── 2.4/
│                       │   │       ├── layer.js
│                       │   │       └── skin/
│                       │   │           └── layer.css
│                       │   ├── laypage/
│                       │   │   └── 1.2/
│                       │   │       ├── laypage.js
│                       │   │       └── skin/
│                       │   │           └── laypage.css
│                       │   ├── lightbox2/
│                       │   │   └── 2.8.1/
│                       │   │       ├── css/
│                       │   │       │   └── lightbox.css
│                       │   │       ├── examples.html
│                       │   │       └── js/
│                       │   │           ├── lightbox-plus-jquery.js
│                       │   │           └── lightbox.js
│                       │   ├── login/
│                       │   │   ├── font-awesome.css
│                       │   │   └── style.css
│                       │   ├── nprogress/
│                       │   │   └── 0.2.0/
│                       │   │       ├── nprogress.css
│                       │   │       └── nprogress.js
│                       │   ├── province/
│                       │   │   ├── distpicker.data.js
│                       │   │   └── distpicker.js
│                       │   ├── squid.js
│                       │   ├── swfobject.js
│                       │   ├── webuploader/
│                       │   │   └── 0.1.5/
│                       │   │       ├── README.md
│                       │   │       ├── Uploader.swf
│                       │   │       ├── cropper/
│                       │   │       │   ├── cropper.js
│                       │   │       │   ├── index.html
│                       │   │       │   └── uploader.js
│                       │   │       ├── expressInstall.swf
│                       │   │       ├── image-upload/
│                       │   │       │   ├── index.html
│                       │   │       │   └── upload.js
│                       │   │       ├── images/
│                       │   │       │   ├── icons.psd
│                       │   │       │   └── progress.psd
│                       │   │       ├── md5-demo/
│                       │   │       │   ├── index.html
│                       │   │       │   └── script.js
│                       │   │       ├── requirejs/
│                       │   │       │   ├── app.js
│                       │   │       │   ├── index.html
│                       │   │       │   └── require.js
│                       │   │       ├── server/
│                       │   │       │   ├── crossdomain.xml
│                       │   │       │   ├── fileupload.php
│                       │   │       │   ├── fileupload2.php
│                       │   │       │   └── preview.php
│                       │   │       ├── webuploader.css
│                       │   │       ├── webuploader.custom.js
│                       │   │       ├── webuploader.fis.js
│                       │   │       ├── webuploader.flashonly.js
│                       │   │       ├── webuploader.html5only.js
│                       │   │       ├── webuploader.js
│                       │   │       ├── webuploader.noimage.js
│                       │   │       ├── webuploader.nolog.js
│                       │   │       └── webuploader.withoutimage.js
│                       │   └── zTree/
│                       │       └── v3/
│                       │           ├── api/
│                       │           │   ├── API_cn.html
│                       │           │   ├── API_en.html
│                       │           │   ├── apiCss/
│                       │           │   │   ├── api.js
│                       │           │   │   ├── common.css
│                       │           │   │   ├── common_ie6.css
│                       │           │   │   ├── jquery.ztree.core-3.5.js
│                       │           │   │   └── zTreeStyleForApi.css
│                       │           │   ├── cn/
│                       │           │   │   ├── fn.zTree._z.html
│                       │           │   │   ├── fn.zTree.destroy.html
│                       │           │   │   ├── fn.zTree.getZTreeObj.html
│                       │           │   │   ├── fn.zTree.init.html
│                       │           │   │   ├── setting.async.autoParam.html
│                       │           │   │   ├── setting.async.contentType.html
│                       │           │   │   ├── setting.async.dataFilter.html
│                       │           │   │   ├── setting.async.dataType.html
│                       │           │   │   ├── setting.async.enable.html
│                       │           │   │   ├── setting.async.otherParam.html
│                       │           │   │   ├── setting.async.type.html
│                       │           │   │   ├── setting.async.url.html
│                       │           │   │   ├── setting.callback.beforeAsync.html
│                       │           │   │   ├── setting.callback.beforeCheck.html
│                       │           │   │   ├── setting.callback.beforeClick.html
│                       │           │   │   ├── setting.callback.beforeCollapse.html
│                       │           │   │   ├── setting.callback.beforeDblClick.html
│                       │           │   │   ├── setting.callback.beforeDrag.html
│                       │           │   │   ├── setting.callback.beforeDragOpen.html
│                       │           │   │   ├── setting.callback.beforeDrop.html
│                       │           │   │   ├── setting.callback.beforeEditName.html
│                       │           │   │   ├── setting.callback.beforeExpand.html
│                       │           │   │   ├── setting.callback.beforeMouseDown.html
│                       │           │   │   ├── setting.callback.beforeMouseUp.html
│                       │           │   │   ├── setting.callback.beforeRemove.html
│                       │           │   │   ├── setting.callback.beforeRename.html
│                       │           │   │   ├── setting.callback.beforeRightClick.html
│                       │           │   │   ├── setting.callback.onAsyncError.html
│                       │           │   │   ├── setting.callback.onAsyncSuccess.html
│                       │           │   │   ├── setting.callback.onCheck.html
│                       │           │   │   ├── setting.callback.onClick.html
│                       │           │   │   ├── setting.callback.onCollapse.html
│                       │           │   │   ├── setting.callback.onDblClick.html
│                       │           │   │   ├── setting.callback.onDrag.html
│                       │           │   │   ├── setting.callback.onDragMove.html
│                       │           │   │   ├── setting.callback.onDrop.html
│                       │           │   │   ├── setting.callback.onExpand.html
│                       │           │   │   ├── setting.callback.onMouseDown.html
│                       │           │   │   ├── setting.callback.onMouseUp.html
│                       │           │   │   ├── setting.callback.onNodeCreated.html
│                       │           │   │   ├── setting.callback.onRemove.html
│                       │           │   │   ├── setting.callback.onRename.html
│                       │           │   │   ├── setting.callback.onRightClick.html
│                       │           │   │   ├── setting.check.autoCheckTrigger.html
│                       │           │   │   ├── setting.check.chkDisabledInherit.html
│                       │           │   │   ├── setting.check.chkStyle.html
│                       │           │   │   ├── setting.check.chkboxType.html
│                       │           │   │   ├── setting.check.enable.html
│                       │           │   │   ├── setting.check.nocheckInherit.html
│                       │           │   │   ├── setting.check.radioType.html
│                       │           │   │   ├── setting.data.keep.leaf.html
│                       │           │   │   ├── setting.data.keep.parent.html
│                       │           │   │   ├── setting.data.key.checked.html
│                       │           │   │   ├── setting.data.key.children.html
│                       │           │   │   ├── setting.data.key.name.html
│                       │           │   │   ├── setting.data.key.title.html
│                       │           │   │   ├── setting.data.key.url.html
│                       │           │   │   ├── setting.data.simpleData.enable.html
│                       │           │   │   ├── setting.data.simpleData.idKey.html
│                       │           │   │   ├── setting.data.simpleData.pIdKey.html
│                       │           │   │   ├── setting.data.simpleData.rootPId.html
│                       │           │   │   ├── setting.edit.drag.autoExpandTrigger.html
│                       │           │   │   ├── setting.edit.drag.autoOpenTime.html
│                       │           │   │   ├── setting.edit.drag.borderMax.html
│                       │           │   │   ├── setting.edit.drag.borderMin.html
│                       │           │   │   ├── setting.edit.drag.inner.html
│                       │           │   │   ├── setting.edit.drag.isCopy.html
│                       │           │   │   ├── setting.edit.drag.isMove.html
│                       │           │   │   ├── setting.edit.drag.maxShowNodeNum.html
│                       │           │   │   ├── setting.edit.drag.minMoveSize.html
│                       │           │   │   ├── setting.edit.drag.next.html
│                       │           │   │   ├── setting.edit.drag.prev.html
│                       │           │   │   ├── setting.edit.editNameSelectAll.html
│                       │           │   │   ├── setting.edit.enable.html
│                       │           │   │   ├── setting.edit.removeTitle.html
│                       │           │   │   ├── setting.edit.renameTitle.html
│                       │           │   │   ├── setting.edit.showRemoveBtn.html
│                       │           │   │   ├── setting.edit.showRenameBtn.html
│                       │           │   │   ├── setting.treeId.html
│                       │           │   │   ├── setting.treeObj.html
│                       │           │   │   ├── setting.view.addDiyDom.html
│                       │           │   │   ├── setting.view.addHoverDom.html
│                       │           │   │   ├── setting.view.autoCancelSelected.html
│                       │           │   │   ├── setting.view.dblClickExpand.html
│                       │           │   │   ├── setting.view.expandSpeed.html
│                       │           │   │   ├── setting.view.fontCss.html
│                       │           │   │   ├── setting.view.nameIsHTML.html
│                       │           │   │   ├── setting.view.removeHoverDom.html
│                       │           │   │   ├── setting.view.selectedMulti.html
│                       │           │   │   ├── setting.view.showIcon.html
│                       │           │   │   ├── setting.view.showLine.html
│                       │           │   │   ├── setting.view.showTitle.html
│                       │           │   │   ├── setting.view.txtSelectedEnable.html
│                       │           │   │   ├── treeNode.check_Child_State.html
│                       │           │   │   ├── treeNode.check_Focus.html
│                       │           │   │   ├── treeNode.checked.html
│                       │           │   │   ├── treeNode.checkedOld.html
│                       │           │   │   ├── treeNode.children.html
│                       │           │   │   ├── treeNode.chkDisabled.html
│                       │           │   │   ├── treeNode.click.html
│                       │           │   │   ├── treeNode.diy.html
│                       │           │   │   ├── treeNode.editNameFlag.html
│                       │           │   │   ├── treeNode.getCheckStatus.html
│                       │           │   │   ├── treeNode.getNextNode.html
│                       │           │   │   ├── treeNode.getParentNode.html
│                       │           │   │   ├── treeNode.getPreNode.html
│                       │           │   │   ├── treeNode.halfCheck.html
│                       │           │   │   ├── treeNode.icon.html
│                       │           │   │   ├── treeNode.iconClose.html
│                       │           │   │   ├── treeNode.iconOpen.html
│                       │           │   │   ├── treeNode.iconSkin.html
│                       │           │   │   ├── treeNode.isAjaxing.html
│                       │           │   │   ├── treeNode.isFirstNode.html
│                       │           │   │   ├── treeNode.isHidden.html
│                       │           │   │   ├── treeNode.isHover.html
│                       │           │   │   ├── treeNode.isLastNode.html
│                       │           │   │   ├── treeNode.isParent.html
│                       │           │   │   ├── treeNode.level.html
│                       │           │   │   ├── treeNode.name.html
│                       │           │   │   ├── treeNode.nocheck.html
│                       │           │   │   ├── treeNode.open.html
│                       │           │   │   ├── treeNode.parentTId.html
│                       │           │   │   ├── treeNode.tId.html
│                       │           │   │   ├── treeNode.target.html
│                       │           │   │   ├── treeNode.url.html
│                       │           │   │   ├── treeNode.zAsync.html
│                       │           │   │   ├── zTreeObj.addNodes.html
│                       │           │   │   ├── zTreeObj.cancelEditName.html
│                       │           │   │   ├── zTreeObj.cancelSelectedNode.html
│                       │           │   │   ├── zTreeObj.checkAllNodes.html
│                       │           │   │   ├── zTreeObj.checkNode.html
│                       │           │   │   ├── zTreeObj.copyNode.html
│                       │           │   │   ├── zTreeObj.destroy.html
│                       │           │   │   ├── zTreeObj.editName.html
│                       │           │   │   ├── zTreeObj.expandAll.html
│                       │           │   │   ├── zTreeObj.expandNode.html
│                       │           │   │   ├── zTreeObj.getChangeCheckedNodes.html
│                       │           │   │   ├── zTreeObj.getCheckedNodes.html
│                       │           │   │   ├── zTreeObj.getNodeByParam.html
│                       │           │   │   ├── zTreeObj.getNodeByTId.html
│                       │           │   │   ├── zTreeObj.getNodeIndex.html
│                       │           │   │   ├── zTreeObj.getNodes.html
│                       │           │   │   ├── zTreeObj.getNodesByFilter.html
│                       │           │   │   ├── zTreeObj.getNodesByParam.html
│                       │           │   │   ├── zTreeObj.getNodesByParamFuzzy.html
│                       │           │   │   ├── zTreeObj.getSelectedNodes.html
│                       │           │   │   ├── zTreeObj.hideNode.html
│                       │           │   │   ├── zTreeObj.hideNodes.html
│                       │           │   │   ├── zTreeObj.moveNode.html
│                       │           │   │   ├── zTreeObj.reAsyncChildNodes.html
│                       │           │   │   ├── zTreeObj.refresh.html
│                       │           │   │   ├── zTreeObj.removeChildNodes.html
│                       │           │   │   ├── zTreeObj.removeNode.html
│                       │           │   │   ├── zTreeObj.selectNode.html
│                       │           │   │   ├── zTreeObj.setChkDisabled.html
│                       │           │   │   ├── zTreeObj.setEditable.html
│                       │           │   │   ├── zTreeObj.setting.html
│                       │           │   │   ├── zTreeObj.showNode.html
│                       │           │   │   ├── zTreeObj.showNodes.html
│                       │           │   │   ├── zTreeObj.transformToArray.html
│                       │           │   │   ├── zTreeObj.transformTozTreeNodes.html
│                       │           │   │   └── zTreeObj.updateNode.html
│                       │           │   └── en/
│                       │           │       ├── fn.zTree._z.html
│                       │           │       ├── fn.zTree.destroy.html
│                       │           │       ├── fn.zTree.getZTreeObj.html
│                       │           │       ├── fn.zTree.init.html
│                       │           │       ├── setting.async.autoParam.html
│                       │           │       ├── setting.async.contentType.html
│                       │           │       ├── setting.async.dataFilter.html
│                       │           │       ├── setting.async.dataType.html
│                       │           │       ├── setting.async.enable.html
│                       │           │       ├── setting.async.otherParam.html
│                       │           │       ├── setting.async.type.html
│                       │           │       ├── setting.async.url.html
│                       │           │       ├── setting.callback.beforeAsync.html
│                       │           │       ├── setting.callback.beforeCheck.html
│                       │           │       ├── setting.callback.beforeClick.html
│                       │           │       ├── setting.callback.beforeCollapse.html
│                       │           │       ├── setting.callback.beforeDblClick.html
│                       │           │       ├── setting.callback.beforeDrag.html
│                       │           │       ├── setting.callback.beforeDragOpen.html
│                       │           │       ├── setting.callback.beforeDrop.html
│                       │           │       ├── setting.callback.beforeEditName.html
│                       │           │       ├── setting.callback.beforeExpand.html
│                       │           │       ├── setting.callback.beforeMouseDown.html
│                       │           │       ├── setting.callback.beforeMouseUp.html
│                       │           │       ├── setting.callback.beforeRemove.html
│                       │           │       ├── setting.callback.beforeRename.html
│                       │           │       ├── setting.callback.beforeRightClick.html
│                       │           │       ├── setting.callback.onAsyncError.html
│                       │           │       ├── setting.callback.onAsyncSuccess.html
│                       │           │       ├── setting.callback.onCheck.html
│                       │           │       ├── setting.callback.onClick.html
│                       │           │       ├── setting.callback.onCollapse.html
│                       │           │       ├── setting.callback.onDblClick.html
│                       │           │       ├── setting.callback.onDrag.html
│                       │           │       ├── setting.callback.onDragMove.html
│                       │           │       ├── setting.callback.onDrop.html
│                       │           │       ├── setting.callback.onExpand.html
│                       │           │       ├── setting.callback.onMouseDown.html
│                       │           │       ├── setting.callback.onMouseUp.html
│                       │           │       ├── setting.callback.onNodeCreated.html
│                       │           │       ├── setting.callback.onRemove.html
│                       │           │       ├── setting.callback.onRename.html
│                       │           │       ├── setting.callback.onRightClick.html
│                       │           │       ├── setting.check.autoCheckTrigger.html
│                       │           │       ├── setting.check.chkDisabledInherit.html
│                       │           │       ├── setting.check.chkStyle.html
│                       │           │       ├── setting.check.chkboxType.html
│                       │           │       ├── setting.check.enable.html
│                       │           │       ├── setting.check.nocheckInherit.html
│                       │           │       ├── setting.check.radioType.html
│                       │           │       ├── setting.data.keep.leaf.html
│                       │           │       ├── setting.data.keep.parent.html
│                       │           │       ├── setting.data.key.checked.html
│                       │           │       ├── setting.data.key.children.html
│                       │           │       ├── setting.data.key.name.html
│                       │           │       ├── setting.data.key.title.html
│                       │           │       ├── setting.data.key.url.html
│                       │           │       ├── setting.data.simpleData.enable.html
│                       │           │       ├── setting.data.simpleData.idKey.html
│                       │           │       ├── setting.data.simpleData.pIdKey.html
│                       │           │       ├── setting.data.simpleData.rootPId.html
│                       │           │       ├── setting.edit.drag.autoExpandTrigger.html
│                       │           │       ├── setting.edit.drag.autoOpenTime.html
│                       │           │       ├── setting.edit.drag.borderMax.html
│                       │           │       ├── setting.edit.drag.borderMin.html
│                       │           │       ├── setting.edit.drag.inner.html
│                       │           │       ├── setting.edit.drag.isCopy.html
│                       │           │       ├── setting.edit.drag.isMove.html
│                       │           │       ├── setting.edit.drag.maxShowNodeNum.html
│                       │           │       ├── setting.edit.drag.minMoveSize.html
│                       │           │       ├── setting.edit.drag.next.html
│                       │           │       ├── setting.edit.drag.prev.html
│                       │           │       ├── setting.edit.editNameSelectAll.html
│                       │           │       ├── setting.edit.enable.html
│                       │           │       ├── setting.edit.removeTitle.html
│                       │           │       ├── setting.edit.renameTitle.html
│                       │           │       ├── setting.edit.showRemoveBtn.html
│                       │           │       ├── setting.edit.showRenameBtn.html
│                       │           │       ├── setting.treeId.html
│                       │           │       ├── setting.treeObj.html
│                       │           │       ├── setting.view.addDiyDom.html
│                       │           │       ├── setting.view.addHoverDom.html
│                       │           │       ├── setting.view.autoCancelSelected.html
│                       │           │       ├── setting.view.dblClickExpand.html
│                       │           │       ├── setting.view.expandSpeed.html
│                       │           │       ├── setting.view.fontCss.html
│                       │           │       ├── setting.view.nameIsHTML.html
│                       │           │       ├── setting.view.removeHoverDom.html
│                       │           │       ├── setting.view.selectedMulti.html
│                       │           │       ├── setting.view.showIcon.html
│                       │           │       ├── setting.view.showLine.html
│                       │           │       ├── setting.view.showTitle.html
│                       │           │       ├── setting.view.txtSelectedEnable.html
│                       │           │       ├── treeNode.check_Child_State.html
│                       │           │       ├── treeNode.check_Focus.html
│                       │           │       ├── treeNode.checked.html
│                       │           │       ├── treeNode.checkedOld.html
│                       │           │       ├── treeNode.children.html
│                       │           │       ├── treeNode.chkDisabled.html
│                       │           │       ├── treeNode.click.html
│                       │           │       ├── treeNode.diy.html
│                       │           │       ├── treeNode.editNameFlag.html
│                       │           │       ├── treeNode.getCheckStatus.html
│                       │           │       ├── treeNode.getNextNode.html
│                       │           │       ├── treeNode.getParentNode.html
│                       │           │       ├── treeNode.getPreNode.html
│                       │           │       ├── treeNode.halfCheck.html
│                       │           │       ├── treeNode.icon.html
│                       │           │       ├── treeNode.iconClose.html
│                       │           │       ├── treeNode.iconOpen.html
│                       │           │       ├── treeNode.iconSkin.html
│                       │           │       ├── treeNode.isAjaxing.html
│                       │           │       ├── treeNode.isFirstNode.html
│                       │           │       ├── treeNode.isHidden.html
│                       │           │       ├── treeNode.isHover.html
│                       │           │       ├── treeNode.isLastNode.html
│                       │           │       ├── treeNode.isParent.html
│                       │           │       ├── treeNode.level.html
│                       │           │       ├── treeNode.name.html
│                       │           │       ├── treeNode.nocheck.html
│                       │           │       ├── treeNode.open.html
│                       │           │       ├── treeNode.parentTId.html
│                       │           │       ├── treeNode.tId.html
│                       │           │       ├── treeNode.target.html
│                       │           │       ├── treeNode.url.html
│                       │           │       ├── treeNode.zAsync.html
│                       │           │       ├── zTreeObj.addNodes.html
│                       │           │       ├── zTreeObj.cancelEditName.html
│                       │           │       ├── zTreeObj.cancelSelectedNode.html
│                       │           │       ├── zTreeObj.checkAllNodes.html
│                       │           │       ├── zTreeObj.checkNode.html
│                       │           │       ├── zTreeObj.copyNode.html
│                       │           │       ├── zTreeObj.destroy.html
│                       │           │       ├── zTreeObj.editName.html
│                       │           │       ├── zTreeObj.expandAll.html
│                       │           │       ├── zTreeObj.expandNode.html
│                       │           │       ├── zTreeObj.getChangeCheckedNodes.html
│                       │           │       ├── zTreeObj.getCheckedNodes.html
│                       │           │       ├── zTreeObj.getNodeByParam.html
│                       │           │       ├── zTreeObj.getNodeByTId.html
│                       │           │       ├── zTreeObj.getNodeIndex.html
│                       │           │       ├── zTreeObj.getNodes.html
│                       │           │       ├── zTreeObj.getNodesByFilter.html
│                       │           │       ├── zTreeObj.getNodesByParam.html
│                       │           │       ├── zTreeObj.getNodesByParamFuzzy.html
│                       │           │       ├── zTreeObj.getSelectedNodes.html
│                       │           │       ├── zTreeObj.hideNode.html
│                       │           │       ├── zTreeObj.hideNodes.html
│                       │           │       ├── zTreeObj.moveNode.html
│                       │           │       ├── zTreeObj.reAsyncChildNodes.html
│                       │           │       ├── zTreeObj.refresh.html
│                       │           │       ├── zTreeObj.removeChildNodes.html
│                       │           │       ├── zTreeObj.removeNode.html
│                       │           │       ├── zTreeObj.selectNode.html
│                       │           │       ├── zTreeObj.setChkDisabled.html
│                       │           │       ├── zTreeObj.setEditable.html
│                       │           │       ├── zTreeObj.setting.html
│                       │           │       ├── zTreeObj.showNode.html
│                       │           │       ├── zTreeObj.showNodes.html
│                       │           │       ├── zTreeObj.transformToArray.html
│                       │           │       ├── zTreeObj.transformTozTreeNodes.html
│                       │           │       └── zTreeObj.updateNode.html
│                       │           ├── css/
│                       │           │   ├── metroStyle/
│                       │           │   │   └── metroStyle.css
│                       │           │   └── zTreeStyle/
│                       │           │       └── zTreeStyle.css
│                       │           └── js/
│                       │               ├── jquery.ztree.all-3.5.js
│                       │               ├── jquery.ztree.core-3.5.js
│                       │               ├── jquery.ztree.excheck-3.5.js
│                       │               ├── jquery.ztree.exedit-3.5.js
│                       │               ├── jquery.ztree.exedit.js
│                       │               └── jquery.ztree.exhide-3.5.js
│                       ├── plugins/
│                       │   ├── ajaxfileupload/
│                       │   │   └── ajaxfileupload.js
│                       │   ├── dropzone/
│                       │   │   ├── basic.css
│                       │   │   ├── dropzone-amd-module.js
│                       │   │   ├── dropzone.css
│                       │   │   ├── dropzone.js
│                       │   │   └── readme.md
│                       │   ├── iCheck/
│                       │   │   ├── all.css
│                       │   │   ├── flat/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── flat.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── futurico/
│                       │   │   │   └── futurico.css
│                       │   │   ├── icheck.js
│                       │   │   ├── line/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── line.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── minimal/
│                       │   │   │   ├── _all.css
│                       │   │   │   ├── aero.css
│                       │   │   │   ├── blue.css
│                       │   │   │   ├── green.css
│                       │   │   │   ├── grey.css
│                       │   │   │   ├── minimal.css
│                       │   │   │   ├── orange.css
│                       │   │   │   ├── pink.css
│                       │   │   │   ├── purple.css
│                       │   │   │   ├── red.css
│                       │   │   │   └── yellow.css
│                       │   │   ├── polaris/
│                       │   │   │   └── polaris.css
│                       │   │   └── square/
│                       │   │       ├── _all.css
│                       │   │       ├── aero.css
│                       │   │       ├── blue.css
│                       │   │       ├── green.css
│                       │   │       ├── grey.css
│                       │   │       ├── orange.css
│                       │   │       ├── pink.css
│                       │   │       ├── purple.css
│                       │   │       ├── red.css
│                       │   │       ├── square.css
│                       │   │       └── yellow.css
│                       │   ├── treeTable/
│                       │   │   ├── demo/
│                       │   │   │   ├── style/
│                       │   │   │   │   └── demo.css
│                       │   │   │   └── treeTable.html
│                       │   │   ├── jquery.treeTable.js
│                       │   │   └── themes/
│                       │   │       ├── default/
│                       │   │       │   └── treeTable.css
│                       │   │       └── vsStyle/
│                       │   │           ├── allbgs.psd
│                       │   │           └── treeTable.css
│                       │   └── wangEditor/
│                       │       ├── wangEditor-fullscreen-plugin.css
│                       │       ├── wangEditor-fullscreen-plugin.js
│                       │       ├── wangEditor.css
│                       │       └── wangEditor.js
│                       └── static/
│                           ├── h-ui/
│                           │   ├── css/
│                           │   │   ├── H-ui.css
│                           │   │   ├── H-ui.ie.css
│                           │   │   └── H-ui.reset.css
│                           │   └── js/
│                           │       └── H-ui.js
│                           ├── h-ui.admin/
│                           │   ├── css/
│                           │   │   ├── H-ui.admin.css
│                           │   │   ├── H-ui.login.css
│                           │   │   └── style.css
│                           │   ├── js/
│                           │   │   ├── H-ui.admin.js
│                           │   │   └── de_DE.txt
│                           │   └── skin/
│                           │       ├── black/
│                           │       │   └── skin.css
│                           │       ├── default/
│                           │       │   └── skin.css
│                           │       ├── green/
│                           │       │   └── skin.css
│                           │       ├── orange/
│                           │       │   └── skin.css
│                           │       ├── red/
│                           │       │   └── skin.css
│                           │       └── yellow/
│                           │           └── skin.css
│                           └── swagger/
│                               ├── css/
│                               │   ├── print.css
│                               │   ├── reset.css
│                               │   ├── screen.css
│                               │   ├── style.css
│                               │   └── typography.css
│                               ├── index.html
│                               ├── lang/
│                               │   ├── el.js
│                               │   ├── en.js
│                               │   ├── es.js
│                               │   ├── fr.js
│                               │   ├── geo.js
│                               │   ├── it.js
│                               │   ├── ja.js
│                               │   ├── ko-kr.js
│                               │   ├── pl.js
│                               │   ├── pt.js
│                               │   ├── ru.js
│                               │   ├── tr.js
│                               │   ├── translator.js
│                               │   └── zh-cn.js
│                               ├── lib/
│                               │   ├── backbone-min.js
│                               │   ├── es5-shim.js
│                               │   ├── handlebars-4.0.5.js
│                               │   ├── highlight.9.1.0.pack.js
│                               │   ├── highlight.9.1.0.pack_extended.js
│                               │   ├── marked.js
│                               │   ├── object-assign-pollyfill.js
│                               │   └── swagger-oauth.js
│                               ├── o2c.html
│                               └── swagger-ui.js
├── ymall-web-api/
│   ├── pom.xml
│   ├── src/
│   │   └── main/
│   │       ├── java/
│   │       │   └── com/
│   │       │       └── yuu/
│   │       │           └── ymall/
│   │       │               └── web/
│   │       │                   └── api/
│   │       │                       ├── common/
│   │       │                       │   ├── config/
│   │       │                       │   │   ├── AlipayConfig.java
│   │       │                       │   │   ├── SwaggerConfiguration.java
│   │       │                       │   │   └── ThymeleafConfig.java
│   │       │                       │   └── utils/
│   │       │                       │       ├── EmailUtil.java
│   │       │                       │       ├── IPInfoUtil.java
│   │       │                       │       ├── ObjectUtil.java
│   │       │                       │       └── QiniuUtil.java
│   │       │                       ├── controller/
│   │       │                       │   ├── CartController.java
│   │       │                       │   ├── GoodsController.java
│   │       │                       │   ├── MemberController.java
│   │       │                       │   └── OrderController.java
│   │       │                       ├── domain/
│   │       │                       │   └── ESItem.java
│   │       │                       ├── dto/
│   │       │                       │   ├── Cart.java
│   │       │                       │   ├── CartProduct.java
│   │       │                       │   ├── CateProductsResult.java
│   │       │                       │   ├── CategoryProductPageInfo.java
│   │       │                       │   ├── EmailCode.java
│   │       │                       │   ├── Member.java
│   │       │                       │   ├── MemberLogin.java
│   │       │                       │   ├── Order.java
│   │       │                       │   ├── OrderInfo.java
│   │       │                       │   ├── OrderPay.java
│   │       │                       │   ├── PageOrder.java
│   │       │                       │   ├── ProductDet.java
│   │       │                       │   ├── TbCate.java
│   │       │                       │   ├── TbPanelContentDto.java
│   │       │                       │   ├── TbPanelDto.java
│   │       │                       │   └── UploadImg.java
│   │       │                       ├── job/
│   │       │                       │   └── OrderCloseJob.java
│   │       │                       ├── mapper/
│   │       │                       │   ├── TbAddressMapper.java
│   │       │                       │   ├── TbExpressMapper.java
│   │       │                       │   ├── TbItemCatMapper.java
│   │       │                       │   ├── TbItemDescMapper.java
│   │       │                       │   ├── TbItemMapper.java
│   │       │                       │   ├── TbMemberMapper.java
│   │       │                       │   ├── TbOrderItemMapper.java
│   │       │                       │   ├── TbOrderMapper.java
│   │       │                       │   ├── TbOrderShippingMapper.java
│   │       │                       │   ├── TbPanelContentMapper.java
│   │       │                       │   ├── TbPanelMapper.java
│   │       │                       │   └── TbUserMapper.java
│   │       │                       ├── repositories/
│   │       │                       │   └── ItemRepository.java
│   │       │                       └── service/
│   │       │                           ├── CartService.java
│   │       │                           ├── ContentService.java
│   │       │                           ├── ItemCatService.java
│   │       │                           ├── MemberService.java
│   │       │                           ├── OrderService.java
│   │       │                           ├── ProductService.java
│   │       │                           └── impl/
│   │       │                               ├── CartServiceImpl.java
│   │       │                               ├── ContentServiceImpl.java
│   │       │                               ├── ItemCatServiceImpl.java
│   │       │                               ├── MemberServieImpl.java
│   │       │                               ├── OrderServiceImpl.java
│   │       │                               └── ProductServiceImpl.java
│   │       ├── resources/
│   │       │   ├── generatorConfig.xml
│   │       │   ├── log4j.properties
│   │       │   ├── log4j2.properties
│   │       │   ├── mapper/
│   │       │   │   ├── TbAddressMapper.xml
│   │       │   │   ├── TbExpressMapper.xml
│   │       │   │   ├── TbItemCatMapper.xml
│   │       │   │   ├── TbItemDescMapper.xml
│   │       │   │   ├── TbItemMapper.xml
│   │       │   │   ├── TbMemberMapper.xml
│   │       │   │   ├── TbOrderItemMapper.xml
│   │       │   │   ├── TbOrderMapper.xml
│   │       │   │   ├── TbOrderShippingMapper.xml
│   │       │   │   ├── TbPanelContentMapper.xml
│   │       │   │   ├── TbPanelMapper.xml
│   │       │   │   └── TbUserMapper.xml
│   │       │   ├── mybatis-config.xml
│   │       │   ├── resource.properties
│   │       │   ├── spring-context-druid.xml
│   │       │   ├── spring-context-elasticsearch.xml
│   │       │   ├── spring-context-mybatis.xml
│   │       │   ├── spring-context-redis.xml
│   │       │   ├── spring-context.xml
│   │       │   ├── spring-mvc.xml
│   │       │   ├── ymall.properties
│   │       │   └── zfbinfo.properties
│   │       └── webapp/
│   │           └── WEB-INF/
│   │               ├── templates/
│   │               │   ├── reset-pass.html
│   │               │   └── update-email.html
│   │               └── web.xml
│   └── test/
│       └── com/
│           └── yuu/
│               └── ymall/
│                   └── web/
│                       └── api/
│                           └── test/
│                               └── EsTest.java
└── ymall-web-ui/
    ├── .babelrc
    ├── .editorconfig
    ├── .eslintignore
    ├── .eslintrc.js
    ├── .gitignore
    ├── .postcssrc.js
    ├── build/
    │   ├── build.js
    │   ├── check-versions.js
    │   ├── dev-client.js
    │   ├── dev-server.js
    │   ├── utils.js
    │   ├── vue-loader.conf.js
    │   ├── webpack.base.conf.js
    │   ├── webpack.dev.conf.js
    │   └── webpack.prod.conf.js
    ├── config/
    │   ├── dev.env.js
    │   ├── index.js
    │   └── prod.env.js
    ├── index.html
    ├── package.json
    ├── src/
    │   ├── App.vue
    │   ├── api/
    │   │   ├── cart.js
    │   │   ├── goods.js
    │   │   ├── index.js
    │   │   ├── member.js
    │   │   ├── order.js
    │   │   └── public.js
    │   ├── assets/
    │   │   ├── icon/
    │   │   │   └── iconfont.css
    │   │   └── style/
    │   │       ├── common.scss
    │   │       ├── index.scss
    │   │       ├── mixin.scss
    │   │       ├── reset.scss
    │   │       └── theme.scss
    │   ├── common/
    │   │   ├── footer.vue
    │   │   └── header.vue
    │   ├── components/
    │   │   ├── YButton.vue
    │   │   ├── buynum.vue
    │   │   ├── countDown.vue
    │   │   ├── mallGoods.vue
    │   │   ├── popup.vue
    │   │   ├── product.vue
    │   │   └── shelf.vue
    │   ├── main.js
    │   ├── page/
    │   │   ├── Cart/
    │   │   │   └── cart.vue
    │   │   ├── Checkout/
    │   │   │   └── checkout.vue
    │   │   ├── Goods/
    │   │   │   ├── goods.vue
    │   │   │   └── goodsDetails.vue
    │   │   ├── Home/
    │   │   │   └── home.vue
    │   │   ├── Login/
    │   │   │   ├── forgetPassword.vue
    │   │   │   ├── login.vue
    │   │   │   └── register.vue
    │   │   ├── Order/
    │   │   │   ├── order.vue
    │   │   │   ├── payment.vue
    │   │   │   └── paysuccess.vue
    │   │   ├── Refresh/
    │   │   │   └── refreshsearch.vue
    │   │   ├── Search/
    │   │   │   └── search.vue
    │   │   ├── User/
    │   │   │   ├── children/
    │   │   │   │   ├── addressList.vue
    │   │   │   │   ├── information.vue
    │   │   │   │   ├── order.vue
    │   │   │   │   └── orderDetail.vue
    │   │   │   └── user.vue
    │   │   └── index.vue
    │   ├── router/
    │   │   └── index.js
    │   ├── store/
    │   │   ├── action.js
    │   │   ├── index.js
    │   │   ├── mutation-types.js
    │   │   └── mutations.js
    │   └── utils/
    │       └── storage.js
    └── static/
        ├── .gitkeep
        ├── geetest/
        │   └── gt.js
        ├── images/
        │   └── global-logo-red@2x.psd
        └── js/
            ├── 3.c565d4ee71bdb3ac0105.js
            ├── 7.0814cc986a8375eb2381.js
            └── app.e28b119acf7c187f0fbf.js
Download .txt
Showing preview only (218K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2607 symbols across 228 files)

FILE: sql/ymall.sql
  type `tb_address` (line 23) | CREATE TABLE `tb_address` (
  type `tb_express` (line 43) | CREATE TABLE `tb_express` (
  type `tb_item` (line 65) | CREATE TABLE `tb_item` (
  type `tb_item_cat` (line 101) | CREATE TABLE `tb_item_cat` (
  type `tb_item_desc` (line 142) | CREATE TABLE `tb_item_desc` (
  type `tb_member` (line 173) | CREATE TABLE `tb_member` (
  type `tb_order` (line 200) | CREATE TABLE `tb_order` (
  type `tb_order_item` (line 233) | CREATE TABLE `tb_order_item` (
  type `tb_order_shipping` (line 259) | CREATE TABLE `tb_order_shipping` (
  type `tb_panel` (line 283) | CREATE TABLE `tb_panel` (
  type `tb_panel_content` (line 318) | CREATE TABLE `tb_panel_content` (
  type `tb_user` (line 421) | CREATE TABLE `tb_user` (

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/consts/Consts.java
  class Consts (line 8) | public class Consts {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/dto/BaseResult.java
  class BaseResult (line 14) | @Data
    method createResult (line 47) | private static BaseResult createResult(int status, String message, Obj...
    method success (line 60) | public static BaseResult success() {
    method success (line 70) | public static BaseResult success(String message) {
    method success (line 80) | public static BaseResult success(Object result) {
    method success (line 91) | public static BaseResult success(String message, Object result) {
    method fail (line 100) | public static BaseResult fail() {
    method fail (line 110) | public static BaseResult fail(String message) {
    method fail (line 121) | public static BaseResult fail(String message, Object result) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/execption/YmallUploadException.java
  class YmallUploadException (line 8) | public class YmallUploadException extends RuntimeException {
    method YmallUploadException (line 12) | public YmallUploadException(String msg) {
    method getMsg (line 16) | public String getMsg() {
    method setMsg (line 20) | public void setMsg(String msg) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetInit.java
  class GeetInit (line 10) | public class GeetInit implements Serializable {
    method getSuccess (line 20) | public int getSuccess() {
    method setSuccess (line 24) | public void setSuccess(int success) {
    method getChallenge (line 28) | public String getChallenge() {
    method setChallenge (line 32) | public void setChallenge(String challenge) {
    method getGt (line 36) | public String getGt() {
    method setGt (line 40) | public void setGt(String gt) {
    method getStatusKey (line 44) | public String getStatusKey() {
    method setStatusKey (line 48) | public void setStatusKey(String statusKey) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetestLib.java
  class GeetestLib (line 22) | public class GeetestLib {
    method GeetestLib (line 89) | public GeetestLib(String captchaId, String privateKey, boolean newFail...
    method getResponseStr (line 101) | public String getResponseStr() {
    method getVersionInfo (line 107) | public String getVersionInfo() {
    method getFailPreProcessRes (line 118) | private String getFailPreProcessRes() {
    method getSuccessPreProcessRes (line 148) | private String getSuccessPreProcessRes(String challenge) {
    method preProcess (line 174) | public int preProcess(HashMap<String, String> data) {
    method registerChallenge (line 192) | private int registerChallenge(HashMap<String, String>data) {
    method objIsEmpty (line 256) | protected boolean objIsEmpty(Object gtObj) {
    method resquestIsLegal (line 280) | private boolean resquestIsLegal(String challenge, String validate, Str...
    method enhencedValidateRequest (line 312) | public int enhencedValidateRequest(String challenge, String validate, ...
    method failbackValidateRequest (line 405) | public int failbackValidateRequest(String challenge, String validate, ...
    method gtlog (line 422) | public void gtlog(String message) {
    method checkResultByPrivate (line 428) | protected boolean checkResultByPrivate(String challenge, String valida...
    method readContentFromGet (line 439) | private String readContentFromGet(String URL) throws IOException {
    method readContentFromPost (line 479) | private String readContentFromPost(String URL, String data) throws IOE...
    method md5Encode (line 529) | private String md5Encode(String plainText) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/persistence/BaseMapper.java
  type BaseMapper (line 13) | public interface BaseMapper<T> {
    method insert (line 21) | int insert(T record);
    method selectByPrimaryKey (line 29) | T selectByPrimaryKey(Long id);
    method selectAll (line 36) | List<T> selectAll();
    method updateByPrimaryKey (line 44) | int updateByPrimaryKey(T record);

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/redis/RedisCacheManager.java
  class RedisCacheManager (line 19) | @Component
    method expire (line 31) | public boolean expire(String key, long time) {
    method getExpire (line 49) | public long getExpire(String key) {
    method hasKey (line 59) | public boolean hasKey(String key) {
    method del (line 73) | public boolean del(String... key) {
    method get (line 95) | public Object get(String key) {
    method set (line 106) | public boolean set(String key, Object value) {
    method set (line 126) | public boolean set(String key, Object value, long time) {
    method setHash (line 148) | public boolean setHash(String key, String hashKey, String hashValue) {
    method setHashMap (line 166) | public boolean setHashMap(String key, HashMap hashMap) {
    method hasHashKye (line 183) | public boolean hasHashKye(String key, String field) {
    method getHash (line 199) | public Object getHash(String key, String field) {
    method getHashByKey (line 208) | public Map<String, Object> getHashByKey(String key) {
    method deleteHash (line 219) | public boolean deleteHash(String key, String field) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/EsUtil.java
  class EsUtil (line 12) | @Component

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/HttpUtil.java
  class HttpUtil (line 22) | public class HttpUtil {
    method doGet (line 36) | public static String doGet(String url) {
    method doGet (line 47) | public static String doGet(String url, String cookie) {
    method doPost (line 58) | public static String doPost(String url, BasicNameValuePair... params) {
    method doPost (line 70) | public static String doPost(String url, String cookie, BasicNameValueP...
    method createRequest (line 83) | private static String createRequest(String url, String requestMethod, ...

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/IDUtil.java
  class IDUtil (line 10) | public class IDUtil {
    method getRandomId (line 17) | public static Long getRandomId() {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/MapperUtil.java
  class MapperUtil (line 22) | public class MapperUtil {
    method getInstance (line 25) | public static ObjectMapper getInstance() {
    method obj2json (line 36) | public static String obj2json(Object obj) throws Exception {
    method obj2jsonIgnoreNull (line 47) | public static String obj2jsonIgnoreNull(Object obj) throws Exception {
    method json2pojo (line 61) | public static <T> T json2pojo(String jsonString, Class<T> clazz) throw...
    method json2pojoByTree (line 74) | public static <T> T json2pojoByTree(String jsonString, String treeNode...
    method json2map (line 87) | public static <T> Map<String, Object> json2map(String jsonString) thro...
    method json2map (line 96) | public static <T> Map<String, T> json2map(String jsonString, Class<T> ...
    method json2mapDeeply (line 112) | public static Map<String, Object> json2mapDeeply(String json) throws E...
    method json2ListRecursion (line 124) | private static List<Object> json2ListRecursion(String json, ObjectMapp...
    method json2MapRecursion (line 153) | private static Map<String, Object> json2MapRecursion(String json, Obje...
    method json2list (line 186) | public static <T> List<T> json2list(String jsonArrayStr, Class<T> claz...
    method json2listByTree (line 199) | public static <T> List<T> json2listByTree(String jsonStr, String treeN...
    method getCollectionType (line 213) | public static JavaType getCollectionType(Class<?> collectionClass, Cla...
    method map2pojo (line 224) | public static <T> T map2pojo(Map map, Class<T> clazz) {
    method mapToJson (line 234) | public static String mapToJson(Map map) {
    method obj2pojo (line 250) | public static <T> T obj2pojo(Object obj, Class<T> clazz) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/SendSmsUtil.java
  class SendSmsUtil (line 17) | public class SendSmsUtil {
    method sendSms (line 50) | public static String sendSms(String phone) {

FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/TimeUtil.java
  class TimeUtil (line 15) | public class TimeUtil {
    method getBeginDayOfWeek (line 22) | public static Date getBeginDayOfWeek() {
    method getEndDayOfWeek (line 42) | public static Date getEndDayOfWeek(){
    method getBeginDayOfMonth (line 55) | public static Date getBeginDayOfMonth() {
    method getEndDayOfMonth (line 66) | public static Date getEndDayOfMonth() {
    method getBeginDayOfLastMonth (line 79) | public static Date getBeginDayOfLastMonth() {
    method getEndDayOfLastMonth (line 90) | public static Date getEndDayOfLastMonth() {
    method getBeginDayOfYear (line 103) | public static Date getBeginDayOfYear(Integer year) {
    method getEndDayOfYear (line 118) | public static Date getEndDayOfYear(Integer year) {
    method getDayStartTime (line 132) | public static Timestamp getDayStartTime(Date d) {
    method getDayEndTime (line 148) | public static Timestamp getDayEndTime(Date d) {
    method getNowYear (line 163) | public static Integer getNowYear() {
    method getNowMonth (line 175) | public static int getNowMonth() {

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbAddress.java
  class TbAddress (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbExpress.java
  class TbExpress (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItem.java
  class TbItem (line 13) | @Data
    method getImages (line 75) | public String[] getImages() {

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemCat.java
  class TbItemCat (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemDesc.java
  class TbItemDesc (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbMember.java
  class TbMember (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrder.java
  class TbOrder (line 12) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderItem.java
  class TbOrderItem (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderShipping.java
  class TbOrderShipping (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanel.java
  class TbPanel (line 11) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanelContent.java
  class TbPanelContent (line 12) | @Data

FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbUser.java
  class TbUser (line 11) | @Data

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/consts/Consts.java
  class Consts (line 10) | public class Consts {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ChartData.java
  class ChartData (line 13) | public class ChartData implements Serializable {
    method getxDatas (line 30) | public List<Object> getxDatas() {
    method setxDatas (line 34) | public void setxDatas(List<Object> xDatas) {
    method getyDatas (line 38) | public List<Object> getyDatas() {
    method setyDatas (line 42) | public void setyDatas(List<Object> yDatas) {
    method getCountAll (line 46) | public Object getCountAll() {
    method setCountAll (line 50) | public void setCountAll(Object countAll) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/City.java
  class City (line 12) | @JsonIgnoreProperties(ignoreUnknown = true)
    method getCity (line 25) | public String getCity() {
    method setCity (line 29) | public void setCity(String city) {
    method getDistrct (line 33) | public String getDistrct() {
    method setDistrct (line 37) | public void setDistrct(String distrct) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/DataTablesResult.java
  class DataTablesResult (line 17) | @Setter
    method DataTablesResult (line 33) | public DataTablesResult(HttpServletRequest request) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/IpWeatherResult.java
  class IpWeatherResult (line 13) | @JsonIgnoreProperties(ignoreUnknown = true)
    method getMsg (line 26) | public String getMsg() {
    method setMsg (line 30) | public void setMsg(String msg) {
    method getResult (line 34) | public List<City> getResult() {
    method setResult (line 38) | public void setResult(List<City> result) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ItemDto.java
  class ItemDto (line 11) | @Data

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderChartData.java
  class OrderChartData (line 14) | public class OrderChartData implements Serializable {
    method getTime (line 26) | public Date getTime() {
    method setTime (line 30) | public void setTime(Date time) {
    method getMoney (line 34) | public BigDecimal getMoney() {
    method setMoney (line 38) | public void setMoney(BigDecimal money) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderDetail.java
  class OrderDetail (line 17) | public class OrderDetail implements Serializable {
    method getTbOrder (line 34) | public TbOrder getTbOrder() {
    method setTbOrder (line 38) | public void setTbOrder(TbOrder tbOrder) {
    method getTbOrderItemList (line 42) | public List<TbOrderItem> getTbOrderItemList() {
    method setTbOrderItemList (line 46) | public void setTbOrderItemList(List<TbOrderItem> tbOrderItemList) {
    method getTbOrderShipping (line 50) | public TbOrderShipping getTbOrderShipping() {
    method setTbOrderShipping (line 54) | public void setTbOrderShipping(TbOrderShipping tbOrderShipping) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ZTreeNode.java
  class ZTreeNode (line 13) | @Getter

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/es/ESItem.java
  class ESItem (line 15) | @Document(indexName = "item", type = "itemList", shards = 1, replicas = 0)
    method getId (line 71) | public Long getId() {
    method setId (line 75) | public void setId(Long id) {
    method getProductName (line 79) | public String getProductName() {
    method setProductName (line 83) | public void setProductName(String productName) {
    method getSubTitle (line 87) | public String getSubTitle() {
    method setSubTitle (line 91) | public void setSubTitle(String subTitle) {
    method getProductId (line 95) | public Long getProductId() {
    method setProductId (line 99) | public void setProductId(Long productId) {
    method getCid (line 103) | public Long getCid() {
    method setCid (line 107) | public void setCid(Long cid) {
    method getSalePrice (line 111) | public Double getSalePrice() {
    method setSalePrice (line 115) | public void setSalePrice(Double salePrice) {
    method getPicUrl (line 119) | public String getPicUrl() {
    method setPicUrl (line 123) | public void setPicUrl(String picUrl) {
    method getOrderNum (line 127) | public Integer getOrderNum() {
    method setOrderNum (line 131) | public void setOrderNum(Integer orderNum) {
    method getLimit (line 135) | public Integer getLimit() {
    method setLimit (line 139) | public void setLimit(Integer limit) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/shiro/MyRealm.java
  class MyRealm (line 19) | public class MyRealm extends AuthorizingRealm {
    method doGetAuthenticationInfo (line 32) | @Override
    method doGetAuthorizationInfo (line 46) | @Override

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/swagger/SwaggerConfiguration.java
  class SwaggerConfiguration (line 24) | @Configuration  // 让 Spring 来加载该配置类
    method createRestApi (line 32) | @Bean
    method apiInfo (line 46) | private ApiInfo apiInfo() {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/DtoUtil.java
  class DtoUtil (line 14) | public class DtoUtil {
    method TbPanel2ZTreeNode (line 24) | public static ZTreeNode TbPanel2ZTreeNode(TbPanel tbPanel) {
    method TbItemCat2ZTreeNode (line 44) | public static ZTreeNode TbItemCat2ZTreeNode(TbItemCat tbItemCat) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IDUtil.java
  class IDUtil (line 10) | public class IDUtil {
    method getRandomId (line 17) | public static Long getRandomId() {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IPInfoUtil.java
  class IPInfoUtil (line 20) | public class IPInfoUtil {
    method getIpAddr (line 35) | public static String getIpAddr(HttpServletRequest request) {
    method getIpInfo (line 73) | public static String getIpInfo(String ip) {
    method getIpCity (line 88) | public static String getIpCity(String ip) {
    method main (line 105) | public static void main(String[] args) {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ObjectUtil.java
  class ObjectUtil (line 15) | public class ObjectUtil {
    method beanToMap (line 23) | public static <T> Map<String, Object> beanToMap(T bean) {
    method mapToStringAll (line 34) | public static String mapToStringAll(Map<String, String[]> paramMap) th...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/QiniuUtil.java
  class QiniuUtil (line 34) | public class QiniuUtil {
    method qiniuUpload (line 52) | public static String qiniuUpload(String filePath){
    method qiniuInputStreamUpload (line 87) | public static String qiniuInputStreamUpload(FileInputStream file, Stri...
    method getUpToken (line 113) | public static String getUpToken() {
    method qiniuBase64Upload (line 117) | public static String qiniuBase64Upload(String data64){
    method base64Data (line 140) | public static String base64Data(String data){
    method renamePic (line 154) | public static String renamePic(String fileName){
    method isValidImage (line 159) | public static String isValidImage(HttpServletRequest request, Multipar...
    method checkExt (line 183) | public static String checkExt(String fileName,String dirName){
    method main (line 198) | public static void main(String[] args){

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ThreadPoolUtil.java
  class ThreadPoolUtil (line 15) | public class ThreadPoolUtil {
    method getPool (line 31) | public static ThreadPoolExecutor getPool() {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbAddressMapper.java
  type TbAddressMapper (line 6) | public interface TbAddressMapper extends BaseMapper<TbAddress> {
    method deleteByPrimaryKey (line 14) | int deleteByPrimaryKey(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbExpressMapper.java
  type TbExpressMapper (line 9) | public interface TbExpressMapper extends BaseMapper<TbExpress> {
    method deleteByPrimaryKey (line 17) | int deleteByPrimaryKey(Integer id);
    method getExpressList (line 25) | List<TbExpress> getExpressList(Map<String, Object> params);
    method getTbExpressCount (line 33) | int getTbExpressCount(Map<String, Object> params);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemCatMapper.java
  type TbItemCatMapper (line 8) | public interface TbItemCatMapper extends BaseMapper<TbItemCat> {
    method deleteByPrimaryKey (line 16) | int deleteByPrimaryKey(Long id);
    method getItemCatList (line 24) | List<TbItemCat> getItemCatList(Long parentId);
    method getMaxSortOrder (line 32) | int getMaxSortOrder(Long parentId);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemDescMapper.java
  type TbItemDescMapper (line 6) | public interface TbItemDescMapper extends BaseMapper<TbItemDesc> {
    method deleteByPrimaryKey (line 14) | int deleteByPrimaryKey(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemMapper.java
  type TbItemMapper (line 10) | public interface TbItemMapper extends BaseMapper<TbItem> {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long id);
    method getAllItemCount (line 25) | int getAllItemCount();
    method selectItemByCondition (line 32) | List<TbItem> selectItemByCondition(@Param("cid") Long cid, @Param("sea...
    method getItemByCid (line 40) | List<TbItem> getItemByCid(Map<String, Object> params);
    method getTbItemByCidCount (line 48) | int getTbItemByCidCount(Map<String, Object> params);
    method stopItemById (line 55) | int stopItemById(Long id);
    method startItemById (line 62) | int startItemById(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbMemberMapper.java
  type TbMemberMapper (line 9) | public interface TbMemberMapper extends BaseMapper<TbMember> {
    method deleteByPrimaryKey (line 17) | int deleteByPrimaryKey(Long id);
    method getAllMemberCount (line 24) | int getAllMemberCount();
    method getMemberList (line 32) | List<TbMember> getMemberList(@Param("search") String search);
    method getMemberListCount (line 40) | int getMemberListCount(@Param("search") String search);
    method getMemberByUsername (line 48) | TbMember getMemberByUsername(String username);
    method getMemberByPhone (line 56) | TbMember getMemberByPhone(String phone);
    method getMemberByEmail (line 64) | TbMember getMemberByEmail(String email);
    method getMemberBanList (line 72) | List<TbMember> getMemberBanList(@Param("search") String search);
    method getMemberBanListCount (line 80) | int getMemberBanListCount(@Param("search") String search);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderItemMapper.java
  type TbOrderItemMapper (line 8) | public interface TbOrderItemMapper extends BaseMapper<TbOrderItem> {
    method deleteByPrimaryKey (line 16) | int deleteByPrimaryKey(String id);
    method getWeekHot (line 23) | List<TbOrderItem> getWeekHot();
    method selectByItemId (line 31) | int selectByItemId(Long id);
    method selectOrderItemByOrderId (line 39) | List<TbOrderItem> selectOrderItemByOrderId(String orderId);
    method selectOrderNumByItemId (line 47) | int selectOrderNumByItemId(Long itemId);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderMapper.java
  type TbOrderMapper (line 12) | public interface TbOrderMapper extends BaseMapper<TbOrder> {
    method deleteByPrimaryKey (line 20) | int deleteByPrimaryKey(String id);
    method selectByPrimaryKey (line 28) | TbOrder selectByPrimaryKey(String id);
    method getAllOrderCount (line 36) | int getAllOrderCount();
    method getOrderList (line 44) | List<TbOrder> getOrderList(Map<String, Object> params);
    method getTbOrderCount (line 52) | int getTbOrderCount(Map<String, Object> params);
    method selectOrderChart (line 62) | List<OrderChartData> selectOrderChart(@Param("startTime") Date startTi...
    method selectOrderChartByYear (line 70) | List<OrderChartData> selectOrderChartByYear(int year);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderShippingMapper.java
  type TbOrderShippingMapper (line 6) | public interface TbOrderShippingMapper extends BaseMapper<TbOrderShippin...
    method deleteByPrimaryKey (line 14) | int deleteByPrimaryKey(String id);
    method selectByPrimaryKey (line 22) | TbOrderShipping selectByPrimaryKey(String id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelContentMapper.java
  type TbPanelContentMapper (line 9) | public interface TbPanelContentMapper extends BaseMapper<TbPanelContent> {
    method deleteByPrimaryKey (line 16) | int deleteByPrimaryKey(Integer id);
    method getTbPanelContentByPanelId (line 23) | List<TbPanelContent> getTbPanelContentByPanelId(Map<String, Object> pa...
    method getTbPanelContentCount (line 31) | int getTbPanelContentCount(Map<String, Object> params);
    method selectContentByIid (line 38) | int selectContentByIid(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelMapper.java
  type TbPanelMapper (line 9) | public interface TbPanelMapper extends BaseMapper<TbPanel> {
    method deleteByPrimaryKey (line 17) | int deleteByPrimaryKey(Integer id);
    method getPanelList (line 25) | List<TbPanel> getPanelList(Map<String, Object> params);
    method getPanelByType (line 33) | TbPanel getPanelByType(int type);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbUserMapper.java
  type TbUserMapper (line 9) | public interface TbUserMapper extends BaseMapper<TbUser> {
    method deleteByPrimaryKey (line 17) | int deleteByPrimaryKey(Long id);
    method getUserByUsername (line 25) | TbUser getUserByUsername(String username);
    method getUserList (line 33) | List<TbUser> getUserList(@Param("search") String search);
    method getUserListCount (line 41) | int getUserListCount(@Param("search") String search);
    method getUserByPhone (line 49) | TbUser getUserByPhone(String phone);
    method getUserByEmail (line 57) | TbUser getUserByEmail(String email);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/repositories/ItemRepository.java
  type ItemRepository (line 11) | public interface ItemRepository extends ElasticsearchRepository<ESItem, ...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ContentService.java
  type ContentService (line 14) | public interface ContentService {
    method getPanelContentListByPanelId (line 25) | DataTablesResult<TbPanelContent> getPanelContentListByPanelId(HttpServ...
    method deletePanelContent (line 33) | BaseResult deletePanelContent(int[] ids);
    method saveContent (line 41) | BaseResult saveContent(TbPanelContent tbPanelContent);
    method selectContentByIid (line 48) | int selectContentByIid(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/CountService.java
  type CountService (line 10) | public interface CountService {
    method countOrder (line 21) | BaseResult countOrder(int type, String startTime, String endTime, int ...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ExpressService.java
  type ExpressService (line 14) | public interface ExpressService {
    method getExpressList (line 23) | DataTablesResult<TbExpress> getExpressList(HttpServletRequest request,...
    method save (line 31) | BaseResult save(TbExpress tbExpress);
    method delete (line 38) | BaseResult delete(Integer[] ids);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemCatService.java
  type ItemCatService (line 14) | public interface ItemCatService {
    method getItemCatList (line 23) | List<ZTreeNode> getItemCatList(Long parentId, int type);
    method saveItemCat (line 31) | BaseResult saveItemCat(TbItemCat tbItemCat);
    method deleteItemCat (line 39) | BaseResult deleteItemCat(Long id);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemService.java
  type ItemService (line 15) | public interface ItemService {
    method getAllItemCount (line 21) | int getAllItemCount();
    method getItemListByCid (line 32) | DataTablesResult<TbItem> getItemListByCid(HttpServletRequest request, ...
    method deleteItem (line 40) | BaseResult deleteItem(Long[] ids);
    method stopItem (line 48) | BaseResult stopItem(Long id);
    method startItem (line 56) | BaseResult startItem(Long id);
    method saveItem (line 64) | BaseResult saveItem(ItemDto itemDto);
    method getItemById (line 72) | BaseResult getItemById(Long itemId);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/MemberService.java
  type MemberService (line 14) | public interface MemberService {
    method getAllMemberCount (line 20) | int getAllMemberCount();
    method getMemberList (line 29) | DataTablesResult<TbMember> getMemberList(HttpServletRequest request, S...
    method banMember (line 37) | BaseResult banMember(Long id);
    method startMember (line 45) | BaseResult startMember(Long[] ids);
    method saveMember (line 53) | BaseResult saveMember(TbMember tbMember);
    method getMemberByUsername (line 62) | Boolean getMemberByUsername(String username, Long id);
    method getMemberByPhone (line 71) | Boolean getMemberByPhone(String phone, Long id);
    method getMemberByEmail (line 80) | Boolean getMemberByEmail(String email, Long id);
    method changeMemberPassword (line 89) | BaseResult changeMemberPassword(Long id, String password);
    method deleteMember (line 96) | BaseResult deleteMember(Long[] ids);
    method getMemberBanList (line 105) | DataTablesResult<TbMember> getMemberBanList(HttpServletRequest request...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/OrderService.java
  type OrderService (line 14) | public interface OrderService {
    method getAllOrderCount (line 21) | int getAllOrderCount();
    method getOrderList (line 31) | DataTablesResult<TbOrder> getOrderList(HttpServletRequest request, Str...
    method getOrderDetail (line 39) | BaseResult getOrderDetail(String id);
    method deliver (line 49) | BaseResult deliver(String orderId, String shippingName, String shippin...
    method cancelOrderByAdmin (line 57) | BaseResult cancelOrderByAdmin(String orderId);
    method deleteOrderByIds (line 65) | BaseResult deleteOrderByIds(String[] ids);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/PanelService.java
  type PanelService (line 14) | public interface PanelService {
    method getPanelList (line 22) | List<ZTreeNode> getPanelList(int type);
    method updatePanel (line 30) | BaseResult updatePanel(TbPanel tbPanel);
    method deletePanelById (line 38) | BaseResult deletePanelById(int id);
    method addPanel (line 46) | BaseResult addPanel(TbPanel tbPanel);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SearchService.java
  type SearchService (line 10) | public interface SearchService {
    method refreshItem (line 19) | void refreshItem(int type, Long itemId);
    method importAllItems (line 26) | void importAllItems();

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SystemService.java
  type SystemService (line 10) | public interface SystemService {
    method getWeekHot (line 17) | BaseResult getWeekHot();

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/UserService.java
  type UserService (line 14) | public interface UserService {
    method getUserByUsername (line 22) | TbUser getUserByUsername(String username);
    method getUserList (line 30) | DataTablesResult<TbUser> getUserList(HttpServletRequest request, Strin...
    method validateUsername (line 39) | Boolean validateUsername(Long id, String username);
    method validatePhone (line 48) | Boolean validatePhone(Long id, String phone);
    method validateEmail (line 57) | Boolean validateEmail(Long id, String email);
    method save (line 65) | BaseResult save(TbUser tbUser);
    method changePass (line 74) | BaseResult changePass(Long id, String password);
    method delete (line 82) | BaseResult delete(Long[] ids);

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ContentServiceImpl.java
  class ContentServiceImpl (line 29) | @Service
    method getPanelContentListByPanelId (line 54) | @Override
    method deletePanelContent (line 85) | @Transactional(readOnly = false)
    method saveContent (line 105) | @Transactional(readOnly = false)
    method selectContentByIid (line 142) | @Override
    method updateNavListRedis (line 150) | private void updateNavListRedis() {
    method deleteHomeRedis (line 157) | private void deleteHomeRedis() {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/CountServiceImpl.java
  class CountServiceImpl (line 27) | @Service
    method countOrder (line 33) | @Override
    method getOrderCountData (line 64) | private List<OrderChartData> getOrderCountData(int type, Date startTim...
    method getFullData (line 107) | private List<OrderChartData> getFullData(List<OrderChartData> data, Da...
    method getFullYearData (line 152) | public List<OrderChartData> getFullYearData(List<OrderChartData> data,...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ExpressServiceImpl.java
  class ExpressServiceImpl (line 25) | @Service
    method getExpressList (line 32) | @Override
    method save (line 54) | @Transactional
    method delete (line 74) | @Transactional

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemCatServiceImpl.java
  class ItemCatServiceImpl (line 24) | @Service
    method getItemCatList (line 37) | @Override
    method saveItemCat (line 58) | @Transactional(readOnly = false)
    method deleteItemCat (line 91) | @Transactional(readOnly = false)

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemServiceImpl.java
  class ItemServiceImpl (line 33) | @Service
    method getAllItemCount (line 61) | @Override
    method getItemListByCid (line 67) | @Override
    method deleteItem (line 89) | @Transactional(readOnly = false)
    method stopItem (line 99) | @Transactional(readOnly = false)
    method startItem (line 108) | @Transactional(readOnly = false)
    method saveItem (line 117) | @Transactional(readOnly = false)
    method getItemById (line 172) | @Override

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/MemberServiceImpl.java
  class MemberServiceImpl (line 26) | @Service
    method getAllMemberCount (line 33) | @Override
    method getMemberList (line 39) | @Override
    method banMember (line 63) | @Transactional
    method startMember (line 79) | @Transactional
    method saveMember (line 96) | @Transactional
    method getMemberByUsername (line 142) | @Override
    method getMemberByPhone (line 163) | @Override
    method getMemberByEmail (line 184) | @Override
    method changeMemberPassword (line 205) | @Transactional
    method deleteMember (line 226) | @Transactional
    method getMemberBanList (line 235) | @Override

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/OrderServiceImpl.java
  class OrderServiceImpl (line 31) | @Service
    method getAllOrderCount (line 44) | @Override
    method getOrderList (line 50) | @Override
    method getOrderDetail (line 72) | @Override
    method deliver (line 93) | @Transactional
    method cancelOrderByAdmin (line 113) | @Transactional
    method deleteOrderByIds (line 128) | @Transactional

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/PanelServiceImpl.java
  class PanelServiceImpl (line 22) | @Service
    method getPanelList (line 35) | @Override
    method updatePanel (line 58) | @Transactional(readOnly = false)
    method deletePanelById (line 74) | @Transactional(readOnly = false)
    method addPanel (line 89) | @Transactional(readOnly = false)
    method deleteHomeRedis (line 119) | private void deleteHomeRedis() {

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SearchServiceImpl.java
  class SearchServiceImpl (line 20) | @Service
    method refreshItem (line 33) | @Override
    method importAllItems (line 68) | @Override

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SystemServiceImpl.java
  class SystemServiceImpl (line 18) | @Service
    method getWeekHot (line 25) | @Override

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 25) | @Service
    method getUserByUsername (line 32) | @Override
    method getUserList (line 37) | @Override
    method validateUsername (line 55) | @Override
    method validatePhone (line 76) | @Override
    method validateEmail (line 97) | @Override
    method save (line 118) | @Transactional
    method changePass (line 139) | @Transactional
    method delete (line 160) | @Transactional

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ContentController.java
  class ContentController (line 19) | @RestController
    method getContentByCid (line 33) | @GetMapping("list/{panelId}")
    method saveContent (line 47) | @PostMapping("save")
    method deleteContent (line 60) | @DeleteMapping("delete/{ids}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/CountController.java
  class CountController (line 20) | @RestController
    method countOrder (line 37) | @GetMapping("order")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ExpressController.java
  class ExpressController (line 19) | @RestController
    method getEXPressList (line 34) | @GetMapping("list")
    method save (line 47) | @PostMapping("save")
    method delete (line 60) | @DeleteMapping("delete/{ids}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemCatController.java
  class ItemCatController (line 19) | @RestController
    method getItemCatList (line 34) | @GetMapping("list/{type}")
    method saveItemCategory (line 47) | @PostMapping("save")
    method deleteItemCategory (line 60) | @DeleteMapping("del/{id}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemController.java
  class ItemController (line 22) | @RestController
    method getAllItemCount (line 42) | @GetMapping("count")
    method getItemList (line 57) | @GetMapping("list/{cid}")
    method deleteItem (line 70) | @DeleteMapping("delete/{ids}")
    method stopItem (line 95) | @DeleteMapping("stop/{id}")
    method startItem (line 113) | @DeleteMapping("start/{id}")
    method saveItem (line 126) | @PostMapping("save")
    method getItemById (line 140) | @GetMapping("{itemId}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/MemberController.java
  class MemberController (line 21) | @RestController
    method getAllMemberCount (line 36) | @GetMapping("count")
    method getMemberList (line 50) | @GetMapping("list")
    method banMember (line 63) | @DeleteMapping("ban/{id}")
    method startMember (line 76) | @DeleteMapping("start/{ids}")
    method validateUsername (line 89) | @GetMapping("username")
    method validatePhone (line 102) | @GetMapping("phone")
    method validateEmail (line 115) | @GetMapping("email")
    method saveMember (line 128) | @PostMapping("save")
    method changeMemberPassword (line 142) | @PostMapping("changePass/{id}")
    method deleteMember (line 155) | @DeleteMapping("delete/{ids}")
    method getBanMemberList (line 169) | @GetMapping("ban/list")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/OrderController.java
  class OrderController (line 21) | @RestController
    method getOrderCount (line 36) | @GetMapping("count")
    method getOrderList (line 48) | @GetMapping("list")
    method getOrderDetail (line 61) | @GetMapping("detail/{id}")
    method deliver (line 77) | @PostMapping("deliver")
    method cancelOrderByAdmin (line 92) | @DeleteMapping("cancel/{orderId}")
    method deleteOrderByIds (line 105) | @DeleteMapping("delete/{ids}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PageController.java
  class PageController (line 15) | @Controller
    method showIndex (line 23) | @GetMapping("/")
    method showPage (line 34) | @GetMapping("{page}")
    method contentCommonListPage (line 45) | @GetMapping("content-common-list")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PanelController.java
  class PanelController (line 23) | @RestController
    method getCommonPanel (line 41) | @GetMapping("common/list/{type}")
    method updateContentPanel (line 57) | @PostMapping("update")
    method deleteContentPanel (line 70) | @DeleteMapping("del/{id}")
    method addContentPanel (line 83) | @PostMapping("add")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SwaggerController.java
  class SwaggerController (line 17) | @RestController
    method swaggerResources (line 28) | @GetMapping("/swagger-resources")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SystemController.java
  class SystemController (line 22) | @RestController
    method getWeather (line 36) | @GetMapping("weather")
    method getWeekHot (line 49) | @GetMapping("weekHot")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UploadController.java
  class UploadController (line 23) | @RestController
    method uploadFile (line 36) | @PostMapping("upload")
    method writeFile (line 94) | private String writeFile(MultipartFile multipartFile, HttpServletReque...

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UserController.java
  class UserController (line 30) | @RestController
    method geetestInit (line 46) | @GetMapping("geetestInit")
    method login (line 74) | @PostMapping("login")
    method logout (line 125) | @GetMapping("logout")
    method getUserInfo (line 138) | @GetMapping("userInfo")
    method unlock (line 156) | @GetMapping("unlock")
    method getUserList (line 178) | @GetMapping("list")
    method validateUsername (line 192) | @GetMapping("username/{id}")
    method validatePhone (line 206) | @GetMapping("phone/{id}")
    method validateEmail (line 220) | @GetMapping("email/{id}")
    method save (line 233) | @PostMapping("save")
    method changePass (line 247) | @PostMapping("changePass")
    method delete (line 260) | @DeleteMapping("delete/{ids}")

FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/interceptor/PermissionInterceptor.java
  class PermissionInterceptor (line 18) | public class PermissionInterceptor implements HandlerInterceptor {
    method preHandle (line 19) | @Override
    method postHandle (line 24) | @Override
    method afterCompletion (line 35) | @Override

FILE: ymall-web-admin/src/main/webapp/static/assets/app/common.js
  function refresh (line 2) | function refresh(){
  function date (line 8) | function date(data){
  function dateAll (line 34) | function dateAll(data){

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/WdatePicker.js
  function B (line 57) | function B(){try{V[N],V.$dp=V.$dp||{}}catch($){V=Y;$dp=$dp||{}}var A={wi...
  function E (line 57) | function E(B,_,A,$){if(B.addEventListener){var C=_.replace(/on/,"");A._i...
  function L (line 57) | function L(A,$,_){if(A.removeEventListener){var B=$.replace(/on/,"");_._...
  function a (line 57) | function a(_,$,A){if(typeof _!=typeof $)return false;if(typeof _=="objec...
  function J (line 57) | function J(){var _,A,$=Y[N][C]("script");for(var B=0;B<$.length;B++){_=$...
  function K (line 57) | function K(A,$,B){var D=Y[N][C]("HEAD").item(0),_=Y[N].createElement("li...
  function F (line 57) | function F($){$=$||V;var A=0,_=0;while($!=V){var D=$.parent[N][C]("ifram...
  function W (line 57) | function W(G,F){if(G.getBoundingClientRect)return G.getBoundingClientRec...
  function M (line 57) | function M($){$=$||V;var B=$[N],A=($.innerWidth)?$.innerWidth:(B[H]&&B[H...
  function b (line 57) | function b($){$=$||V;var B=$[N],A=B[H],_=B.body;B=(A&&A.scrollTop!=null&...
  function D (line 57) | function D($){try{var _=$?($.srcElement||$.target):null;if($dp.cal&&!$dp...
  function Z (line 57) | function Z(){$dp.status=2}
  function U (line 57) | function U(K,C){if(!$dp)return;B();var L={};for(var H in K)L[H]=K[H];for...
  function R (line 57) | function R(_,$){return _.currentStyle?_.currentStyle[$]:document.default...
  function P (line 57) | function P(_,$){if(_)if($!=null)_.style.display=$;else return R(_,"displ...
  function I (line 57) | function I(G,_){var D=G.el?G.el.nodeName:"INPUT";if(_||G.eCont||new RegE...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/examples/excanvas.js
  function getContext (line 56) | function getContext() {
  function bind (line 79) | function bind(f, obj, var_args) {
  function onPropertyChange (line 171) | function onPropertyChange(e) {
  function onResize (line 186) | function onResize(e) {
  function createMatrixIdentity (line 204) | function createMatrixIdentity() {
  function matrixMultiply (line 212) | function matrixMultiply(m1, m2) {
  function copyState (line 229) | function copyState(o1, o2) {
  function processStyle (line 246) | function processStyle(styleString) {
  function processLineCap (line 270) | function processLineCap(lineCap) {
  function CanvasRenderingContext2D_ (line 288) | function CanvasRenderingContext2D_(surfaceElement) {
  function bezierCurveTo (line 355) | function bezierCurveTo(self, cp1, cp2, p) {
  function matrixIsFinite (line 800) | function matrixIsFinite(m) {
  function setM (line 811) | function setM(ctx, m, updateLineScale) {
  function CanvasGradient_ (line 896) | function CanvasGradient_(aType) {
  function CanvasPattern_ (line 914) | function CanvasPattern_() {}

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/bootstrap.js
  function transitionEnd (line 36) | function transitionEnd() {
  function removeElement (line 121) | function removeElement() {
  function clearMenus (line 767) | function clearMenus() {
  function getParent (line 778) | function getParent($this) {
  function complete (line 1339) | function complete() {
  function ScrollSpy (line 1607) | function ScrollSpy(element, options) {
  function next (line 1808) | function next() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/common-scripts.js
  function responsiveView (line 32) | function responsiveView() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/count.js
  function countUp (line 1) | function countUp(count)
  function countUp2 (line 24) | function countUp2(count)
  function countUp3 (line 47) | function countUp3(count)
  function countUp4 (line 70) | function countUp4(count)

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/html5shiv.js
  function m (line 4) | function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}
  function i (line 4) | function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}
  function p (line 4) | function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=...
  function t (line 4) | function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.cr...
  function q (line 5) | function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/jquery.dcjqaccordion.2.7.js
  function setUpAccordion (line 116) | function setUpAccordion(){
  function linkOver (line 140) | function linkOver(){
  function linkOut (line 166) | function linkOut(){
  function menuOver (line 169) | function menuOver(){
  function menuOut (line 172) | function menuOut(){
  function autoCloseAccordion (line 183) | function autoCloseAccordion($parentsLi, $parentsUl){
  function resetAccordion (line 190) | function resetAccordion(){

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/jquery.js
  function M (line 4) | function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.n...
  function at (line 4) | function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)...
  function st (line 4) | function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLeng...
  function lt (line 4) | function lt(e){return e[b]=!0,e}
  function ut (line 4) | function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){re...
  function ct (line 4) | function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[...
  function pt (line 4) | function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sou...
  function ft (line 4) | function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"...
  function dt (line 4) | function dt(e){return function(t){var n=t.nodeName.toLowerCase();return(...
  function ht (line 4) | function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,...
  function gt (line 4) | function gt(){}
  function mt (line 4) | function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0)...
  function yt (line 4) | function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}
  function vt (line 4) | function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.firs...
  function bt (line 4) | function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i-...
  function xt (line 4) | function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)...
  function wt (line 4) | function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)...
  function Tt (line 4) | function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relat...
  function Ct (line 4) | function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d)...
  function Nt (line 4) | function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}
  function kt (line 4) | function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0...
  function F (line 4) | function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t...
  function R (line 5) | function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType...
  function W (line 5) | function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e...
  function $ (line 5) | function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-...
  function I (line 5) | function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&...
  function it (line 5) | function it(){return!0}
  function ot (line 5) | function ot(){return!1}
  function at (line 5) | function at(){try{return a.activeElement}catch(e){}}
  function pt (line 5) | function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}
  function ft (line 5) | function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){retu...
  function dt (line 5) | function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.cre...
  function Lt (line 5) | function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType...
  function Ht (line 5) | function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}
  function qt (line 5) | function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttrib...
  function _t (line 5) | function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval...
  function Mt (line 5) | function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e)...
  function Ot (line 5) | function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCas...
  function Ft (line 5) | function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getEl...
  function Bt (line 5) | function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}
  function tn (line 6) | function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.sl...
  function nn (line 6) | function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(...
  function rn (line 6) | function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.sty...
  function on (line 6) | function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[...
  function an (line 6) | function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:...
  function sn (line 6) | function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o...
  function ln (line 6) | function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(...
  function un (line 6) | function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[...
  function gn (line 6) | function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn....
  function Hn (line 6) | function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var ...
  function qn (line 6) | function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!...
  function _n (line 6) | function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i...
  function k (line 6) | function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t...
  function Mn (line 6) | function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[...
  function On (line 6) | function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])fo...
  function In (line 6) | function In(){try{return new e.XMLHttpRequest}catch(t){}}
  function zn (line 6) | function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(...
  function Kn (line 6) | function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}
  function Zn (line 6) | function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;fo...
  function er (line 6) | function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(functio...
  function tr (line 6) | function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e...
  function nr (line 6) | function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&n...
  function rr (line 6) | function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}
  function ir (line 6) | function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r...
  function or (line 6) | function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.pa...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/jquery.nicescroll.js
  function k (line 9) | function k(){var d=b.win;if("zIndex"in d)return d.zIndex();for(;0<d.leng...
  function l (line 9) | function l(d,c,f){c=d.css(c);d=parseFloat(c);return isNaN(d)?(d=u[c]||0,...
  function q (line 9) | function q(d,c,f,g){b._bind(d,c,function(b){b=b?b:window.event;var g={or...
  function t (line 10) | function t(d,c,f){var g,e;0==d.deltaMode?(g=-Math.floor(d.deltaX*(b.opt....
  function e (line 93) | function e(){if(b.cancelAnimationFrame)return!0;b.scrollrunning=!0;if(p=...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/owl.carousel.js
  function F (line 15) | function F() {}
  function getData (line 42) | function getData(data) {
  function getTouches (line 780) | function getTouches(event){
  function swapEvents (line 801) | function swapEvents(type){
  function dragStart (line 810) | function dragStart(event) {
  function dragMove (line 845) | function dragMove(event){

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/gt.js
  function _Object (line 30) | function _Object(obj) {
  function Config (line 45) | function Config(config) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/html5shiv.js
  function m (line 4) | function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}
  function i (line 4) | function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}
  function p (line 4) | function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=...
  function t (line 4) | function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.cr...
  function q (line 5) | function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jQuery.print.js
  function getjQueryObject (line 9) | function getjQueryObject(string) {
  function printFrame (line 22) | function printFrame(frameWindow, content, options) {
  function printContentInIFrame (line 65) | function printContentInIFrame(content, options) {
  function printContentInNewWindow (line 104) | function printContentInNewWindow(content, options) {
  function isNode (line 117) | function isNode(o) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jquery.contextmenu/jquery.contextmenu.r2.js
  function display (line 91) | function display(index, trigger, e, options) {
  function hide (line 123) | function hide() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jquery.validation/1.14.0/additional-methods.js
  function stripHtml (line 19) | function stripHtml(value) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jquery.validation/1.14.0/jquery.validate.js
  function handle (line 65) | function handle() {
  function delegate (line 375) | function delegate( event ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jquery.validation/1.14.0/validate-methods.js
  function isIdCardNo (line 194) | function isIdCardNo(num){

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jquery/1.9.1/jquery.js
  function isArraylike (line 951) | function isArraylike( obj ) {
  function createOptions (line 974) | function createOptions( options ) {
  function internalData (line 1551) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
  function internalRemoveData (line 1645) | function internalRemoveData( elem, name, pvt ) {
  function dataAttr (line 1841) | function dataAttr( elem, key, data ) {
  function isEmptyDataObject (line 1873) | function isEmptyDataObject( obj ) {
  function returnTrue (line 2702) | function returnTrue() {
  function returnFalse (line 2706) | function returnFalse() {
  function isNative (line 3841) | function isNative( fn ) {
  function createCache (line 3851) | function createCache() {
  function markFunction (line 3869) | function markFunction( fn ) {
  function assert (line 3878) | function assert( fn ) {
  function Sizzle (line 3891) | function Sizzle( selector, context, results, seed ) {
  function siblingCheck (line 4449) | function siblingCheck( a, b ) {
  function createInputPseudo (line 4471) | function createInputPseudo( type ) {
  function createButtonPseudo (line 4479) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 4487) | function createPositionalPseudo( fn ) {
  function tokenize (line 5014) | function tokenize( selector, parseOnly ) {
  function toSelector (line 5081) | function toSelector( tokens ) {
  function addCombinator (line 5091) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 5141) | function elementMatcher( matchers ) {
  function condense (line 5155) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 5176) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 5269) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 5321) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function multipleContexts (line 5449) | function multipleContexts( selector, contexts, results ) {
  function select (line 5458) | function select( selector, context, results, seed ) {
  function setFilters (line 5527) | function setFilters() {}
  function sibling (line 5680) | function sibling( cur, dir ) {
  function winnow (line 5788) | function winnow( elements, qualifier, keep ) {
  function createSafeFragment (line 5821) | function createSafeFragment( document ) {
  function findOrAppend (line 6202) | function findOrAppend( elem, tag ) {
  function disableScript (line 6207) | function disableScript( elem ) {
  function restoreScript (line 6212) | function restoreScript( elem ) {
  function setGlobalEval (line 6223) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 6231) | function cloneCopyEvent( src, dest ) {
  function fixCloneNodeIssues (line 6259) | function fixCloneNodeIssues( src, dest ) {
  function getAll (line 6352) | function getAll( context, tag ) {
  function fixDefaultChecked (line 6375) | function fixDefaultChecked( elem ) {
  function vendorPropName (line 6640) | function vendorPropName( style, name ) {
  function isHidden (line 6662) | function isHidden( elem, el ) {
  function showHide (line 6669) | function showHide( elements, show ) {
  function setPositiveNumber (line 7016) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 7024) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 7063) | function getWidthOrHeight( elem, name, extra ) {
  function css_defaultDisplay (line 7107) | function css_defaultDisplay( nodeName ) {
  function actualDisplay (line 7139) | function actualDisplay( name, doc ) {
  function buildParams (line 7368) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 7466) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7498) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7525) | function ajaxExtend( target, src ) {
  function done (line 7991) | function done( status, nativeStatusText, responses, headers ) {
  function ajaxHandleResponses (line 8117) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8178) | function ajaxConvert( s, response ) {
  function createStandardXHR (line 8439) | function createStandardXHR() {
  function createActiveXHR (line 8445) | function createActiveXHR() {
  function createFxNow (line 8684) | function createFxNow() {
  function createTweens (line 8691) | function createTweens( animation, props ) {
  function Animation (line 8706) | function Animation( elem, properties, options ) {
  function propFilter (line 8810) | function propFilter( props, specialEasing ) {
  function defaultPrefilter (line 8877) | function defaultPrefilter( elem, props, opts ) {
  function Tween (line 9004) | function Tween( elem, options, prop, end, easing ) {
  function genFx (line 9230) | function genFx( type, includeWidth ) {
  function getWindow (line 9526) | function getWindow( elem ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/jselect-1.0.js
  function JSelect (line 18) | function JSelect() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/kindeditor.js
  function _isArray (line 36) | function _isArray(val) {
  function _isFunction (line 42) | function _isFunction(val) {
  function _inArray (line 48) | function _inArray(val, arr) {
  function _each (line 56) | function _each(obj, fn) {
  function _trim (line 73) | function _trim(str) {
  function _inString (line 76) | function _inString(val, str, delimiter) {
  function _addUnit (line 80) | function _addUnit(val, unit) {
  function _removeUnit (line 84) | function _removeUnit(val) {
  function _escape (line 88) | function _escape(val) {
  function _unescape (line 91) | function _unescape(val) {
  function _toCamel (line 94) | function _toCamel(str) {
  function _toHex (line 102) | function _toHex(val) {
  function _toMap (line 113) | function _toMap(val, delimiter) {
  function _toArray (line 127) | function _toArray(obj, offset) {
  function _undef (line 130) | function _undef(val, defaultVal) {
  function _invalidUrl (line 133) | function _invalidUrl(url) {
  function _addParam (line 136) | function _addParam(url, param) {
  function _extend (line 139) | function _extend(child, parent, proto) {
  function _json (line 161) | function _json(text) {
  function _getBasePath (line 223) | function _getBasePath() {
  function _bindEvent (line 335) | function _bindEvent(el, type, fn) {
  function _unbindEvent (line 343) | function _unbindEvent(el, type, fn) {
  function KEvent (line 355) | function KEvent(el, event) {
  function _getId (line 437) | function _getId(el) {
  function _setId (line 440) | function _setId(el) {
  function _removeId (line 444) | function _removeId(el) {
  function _bind (line 453) | function _bind(el, type, fn) {
  function _unbind (line 490) | function _unbind(el, type, fn) {
  function _fire (line 542) | function _fire(el, type) {
  function _ctrl (line 558) | function _ctrl(el, key, fn) {
  function _ready (line 569) | function _ready(fn) {
  function _getCssList (line 624) | function _getCssList(css) {
  function _getAttrList (line 636) | function _getAttrList(tag) {
  function _addClassToTag (line 647) | function _addClassToTag(tag, className) {
  function _formatCss (line 661) | function _formatCss(css) {
  function _formatUrl (line 668) | function _formatUrl(url, mode, host, pathname) {
  function _formatHtml (line 737) | function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) {
  function _clearMsWord (line 914) | function _clearMsWord(html, htmlTags) {
  function _mediaType (line 928) | function _mediaType(src) {
  function _mediaClass (line 938) | function _mediaClass(type) {
  function _mediaAttrs (line 947) | function _mediaAttrs(srcTag) {
  function _mediaEmbed (line 950) | function _mediaEmbed(attrs) {
  function _mediaImg (line 958) | function _mediaImg(blankPath, attrs) {
  function _tmpl (line 985) | function _tmpl(str, data) {
  function _contains (line 1010) | function _contains(nodeA, nodeB) {
  function _getAttr (line 1024) | function _getAttr(el, key) {
  function _queryAll (line 1046) | function _queryAll(expr, root) {
  function _query (line 1222) | function _query(expr, root) {
  function _get (line 1230) | function _get(val) {
  function _getDoc (line 1233) | function _getDoc(node) {
  function _getWin (line 1239) | function _getWin(node) {
  function _setHtml (line 1246) | function _setHtml(el, html) {
  function _hasClass (line 1262) | function _hasClass(el, cls) {
  function _setAttr (line 1265) | function _setAttr(el, key, val) {
  function _removeAttr (line 1271) | function _removeAttr(el, key) {
  function _getNodeName (line 1278) | function _getNodeName(node) {
  function _computedCss (line 1284) | function _computedCss(el, key) {
  function _hasVal (line 1294) | function _hasVal(node) {
  function _docElement (line 1297) | function _docElement(doc) {
  function _docHeight (line 1301) | function _docHeight(doc) {
  function _docWidth (line 1305) | function _docWidth(doc) {
  function _getScrollPos (line 1309) | function _getScrollPos(doc) {
  function KNode (line 1323) | function KNode(node) {
  function walk (line 1755) | function walk(node) {
  function newNode (line 1784) | function newNode(node) {
  function _updateCollapsed (line 1836) | function _updateCollapsed(range) {
  function _copyAndDelete (line 1840) | function _copyAndDelete(range, isCopy, isDelete) {
  function _moveToElementText (line 1960) | function _moveToElementText(range, el) {
  function _getStartEnd (line 1974) | function _getStartEnd(rng, isStart) {
  function _getEndRange (line 2040) | function _getEndRange(node, offset) {
  function _toRange (line 2098) | function _toRange(rng) {
  function KRange (line 2132) | function KRange(doc) {
  function getParents (line 2146) | function getParents(node) {
  function downPos (line 2384) | function downPos(node, pos, isStart) {
  function upPos (line 2422) | function upPos(node, pos, isStart) {
  function enlargePos (line 2447) | function enlargePos(node, pos, isStart) {
  function _range (line 2536) | function _range(mixed) {
  function _nativeCommand (line 2551) | function _nativeCommand(doc, key, val) {
  function _nativeCommandValue (line 2557) | function _nativeCommandValue(doc, key) {
  function _getSel (line 2568) | function _getSel(doc) {
  function _getRng (line 2573) | function _getRng(doc) {
  function _singleKeyMap (line 2588) | function _singleKeyMap(map) {
  function _hasAttrOrCss (line 2600) | function _hasAttrOrCss(knode, map) {
  function _hasAttrOrCssByKey (line 2603) | function _hasAttrOrCssByKey(knode, map, mapKey) {
  function _removeAttrOrCss (line 2632) | function _removeAttrOrCss(knode, map) {
  function _removeAttrOrCssByKey (line 2639) | function _removeAttrOrCssByKey(knode, map, mapKey) {
  function _getInnerNode (line 2671) | function _getInnerNode(knode) {
  function _isEmptyNode (line 2679) | function _isEmptyNode(knode) {
  function _mergeWrapper (line 2689) | function _mergeWrapper(a, b) {
  function _wrapNode (line 2709) | function _wrapNode(knode, wrapper) {
  function _mergeAttrs (line 2734) | function _mergeAttrs(knode, attrs, styles) {
  function _inPreElement (line 2745) | function _inPreElement(knode) {
  function KCmd (line 2755) | function KCmd(range) {
  function find (line 3022) | function find(node) {
  function find (line 3055) | function find(node) {
  function lc (line 3081) | function lc(val) {
  function pasteHtml (line 3201) | function pasteHtml(range, val) {
  function insertHtml (line 3216) | function insertHtml(range, val) {
  function setAttr (line 3289) | function setAttr(node, url, type) {
  function _cmd (line 3360) | function _cmd(mixed) {
  function _drag (line 3371) | function _drag(options) {
  function KWidget (line 3440) | function KWidget(options) {
  function _widget (line 3583) | function _widget(options) {
  function _iframeDoc (line 3590) | function _iframeDoc(iframe) {
  function _getInitHtml (line 3598) | function _getInitHtml(themesPath, bodyClass, cssPath, cssData) {
  function _elementVal (line 3668) | function _elementVal(knode, val) {
  function KEdit (line 3681) | function KEdit(options) {
  function ready (line 3719) | function ready() {
  function timeoutHandler (line 3913) | function timeoutHandler(e) {
  function _edit (line 3923) | function _edit(options) {
  function _selectToolbar (line 3931) | function _selectToolbar(name, fn) {
  function KToolbar (line 3943) | function KToolbar(options) {
  function find (line 3956) | function find(target) {
  function hover (line 3965) | function hover(e, method) {
  function _toolbar (line 4056) | function _toolbar(options) {
  function KMenu (line 4064) | function KMenu(options) {
  function _menu (line 4140) | function _menu(options) {
  function KColorPicker (line 4148) | function KColorPicker(options) {
  function _colorpicker (line 4218) | function _colorpicker(options) {
  function KUploadButton (line 4225) | function KUploadButton(options) {
  function _uploadbutton (line 4311) | function _uploadbutton(options) {
  function _createButton (line 4318) | function _createButton(arg) {
  function KDialog (line 4331) | function KDialog(options) {
  function _dialog (line 4450) | function _dialog(options) {
  function _tabs (line 4457) | function _tabs(options) {
  function _loadScript (line 4513) | function _loadScript(url, fn) {
  function _chopQuery (line 4531) | function _chopQuery(url) {
  function _loadStyle (line 4535) | function _loadStyle(url) {
  function _ajax (line 4549) | function _ajax(url, fn, method, param, dataType) {
  function _plugin (line 4584) | function _plugin(name, fn) {
  function _parseLangKey (line 4594) | function _parseLangKey(key) {
  function _lang (line 4602) | function _lang(mixed, langType) {
  function _getImageFromRange (line 4628) | function _getImageFromRange(range, fn) {
  function _bindContextmenuEvent (line 4645) | function _bindContextmenuEvent() {
  function _bindNewlineEvent (line 4709) | function _bindNewlineEvent() {
  function _bindTabEvent (line 4791) | function _bindTabEvent() {
  function _bindFocusEvent (line 4810) | function _bindFocusEvent() {
  function _removeBookmarkTag (line 4822) | function _removeBookmarkTag(html) {
  function _removeTempTag (line 4825) | function _removeTempTag(html) {
  function _addBookmarkToStack (line 4828) | function _addBookmarkToStack(stack, bookmark) {
  function _undoToRedo (line 4841) | function _undoToRedo(fromStack, toStack) {
  function KEditor (line 4873) | function KEditor(options) {
  function initResize (line 5173) | function initResize() {
  function _editor (line 5515) | function _editor(options) {
  function _create (line 5519) | function _create(expr, options) {
  function _eachEditor (line 5563) | function _eachEditor(expr, fn) {
  function movePastedData (line 5892) | function movePastedData() {
  function hideScroll (line 6383) | function hideScroll() {
  function resetHeight (line 6389) | function resetHeight() {
  function init (line 6398) | function init() {
  function ready (line 6489) | function ready() {
  function ready (line 6621) | function ready() {
  function bindCellEvent (line 6764) | function bindCellEvent(cell, j, num) {
  function createEmoticonsTable (line 6790) | function createEmoticonsTable(pageNum, parentDiv) {
  function removeEvent (line 6824) | function removeEvent() {
  function bindPageEvent (line 6830) | function bindPageEvent(el, pageNum) {
  function createPageTable (line 6841) | function createPageTable(currentPageNum) {
  function makeFileTitle (line 6873) | function makeFileTitle(filename, filesize, datetime) {
  function bindTitle (line 6876) | function bindTitle(el, data) {
  function reloadPage (line 6926) | function reloadPage(path, order, func) {
  function bindEvent (line 6935) | function bindEvent(el, result, data, createFunc) {
  function createCommon (line 6953) | function createCommon(result, createFunc) {
  function createList (line 6976) | function createList(result) {
  function createView (line 7007) | function createView(result) {
  function setSize (line 7419) | function setSize(width, height) {
  function KSWFUpload (line 7912) | function KSWFUpload(options) {
  function showError (line 7938) | function showError(itemDiv, msg) {
  function getFirstChild (line 9052) | function getFirstChild(knode) {
  function _setColor (line 9107) | function _setColor(box, color) {
  function _initColorPicker (line 9114) | function _initColorPicker(dialogDiv, colorBox) {
  function _getCellIndex (line 9148) | function _getCellIndex(table, row, cell) {
  function getFilePath (line 9783) | function getFilePath(fileName) {
  function init (line 9885) | function init() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/autoheight/autoheight.js
  function hideScroll (line 19) | function hideScroll() {
  function resetHeight (line 26) | function resetHeight() {
  function init (line 36) | function init() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/baidumap/baidumap.js
  function ready (line 75) | function ready() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/code/prettify.js
  function L (line 2) | function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var...
  function M (line 6) | function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.classN...
  function B (line 7) | function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}
  function x (line 7) | function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(...
  function u (line 9) | function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''...
  function D (line 12) | function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.clas...
  function k (line 15) | function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(...
  function C (line 15) | function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-m...
  function E (line 15) | function E(a){var m=
  function m (line 25) | function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Inf...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/emoticons/emoticons.js
  function bindCellEvent (line 35) | function bindCellEvent(cell, j, num) {
  function createEmoticonsTable (line 61) | function createEmoticonsTable(pageNum, parentDiv) {
  function removeEvent (line 95) | function removeEvent() {
  function bindPageEvent (line 101) | function bindPageEvent(el, pageNum) {
  function createPageTable (line 112) | function createPageTable(currentPageNum) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/filemanager/filemanager.js
  function makeFileTitle (line 15) | function makeFileTitle(filename, filesize, datetime) {
  function bindTitle (line 18) | function bindTitle(el, data) {
  function reloadPage (line 72) | function reloadPage(path, order, func) {
  function bindEvent (line 81) | function bindEvent(el, result, data, createFunc) {
  function createCommon (line 99) | function createCommon(result, createFunc) {
  function createList (line 124) | function createList(result) {
  function createView (line 155) | function createView(result) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/fixtoolbar/fixtoolbar.js
  function init (line 11) | function init() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/image/image.js
  function setSize (line 242) | function setSize(width, height) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/map/map.js
  function ready (line 116) | function ready() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/multiimage/multiimage.js
  function KSWFUpload (line 13) | function KSWFUpload(options) {
  function showError (line 41) | function showError(itemDiv, msg) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/quickformat/quickformat.js
  function getFirstChild (line 13) | function getFirstChild(knode) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/table/table.js
  function _setColor (line 13) | function _setColor(box, color) {
  function _initColorPicker (line 21) | function _initColorPicker(dialogDiv, colorBox) {
  function _getCellIndex (line 56) | function _getCellIndex(table, row, cell) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/kindeditor/plugins/template/template.js
  function getFilePath (line 13) | function getFilePath(fileName) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/layer/2.4/layer.js
  function b (line 2) | function b(a){a=g.find(a),a.height(i[1]-j-k-2*(0|parseFloat(a.css("paddi...
  function a (line 2) | function a(){var a=g.cancel&&g.cancel(b.index,d);a===!1||f.close(b.index)}
  function b (line 2) | function b(){a.css({top:f+(e.config.fix?d.scrollTop():0)})}
  function g (line 2) | function g(a,b,c){var d=new Image;return d.src=a,d.complete?b(d):(d.onlo...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/laypage/1.2/laypage.js
  function a (line 2) | function a(d){var e="laypagecss";a.dir="dir"in a?a.dir:f.getpath+"/skin/...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/lightbox2/2.8.1/js/lightbox-plus-jquery.js
  function isArraylike (line 533) | function isArraylike( obj ) {
  function Sizzle (line 750) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 864) | function createCache() {
  function markFunction (line 882) | function markFunction( fn ) {
  function assert (line 891) | function assert( fn ) {
  function addHandle (line 913) | function addHandle( attrs, handler ) {
  function siblingCheck (line 928) | function siblingCheck( a, b ) {
  function createInputPseudo (line 955) | function createInputPseudo( type ) {
  function createButtonPseudo (line 966) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 977) | function createPositionalPseudo( fn ) {
  function testContext (line 1000) | function testContext( context ) {
  function setFilters (line 2009) | function setFilters() {}
  function toSelector (line 2080) | function toSelector( tokens ) {
  function addCombinator (line 2090) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2143) | function elementMatcher( matchers ) {
  function multipleContexts (line 2157) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2166) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2187) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2280) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2338) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function winnow (line 2634) | function winnow( elements, qualifier, not ) {
  function sibling (line 2958) | function sibling( cur, dir ) {
  function createOptions (line 3036) | function createOptions( options ) {
  function completed (line 3430) | function completed() {
  function Data (line 3535) | function Data() {
  function dataAttr (line 3726) | function dataAttr( elem, key, data ) {
  function returnTrue (line 4066) | function returnTrue() {
  function returnFalse (line 4070) | function returnFalse() {
  function safeActiveElement (line 4074) | function safeActiveElement() {
  function manipulationTarget (line 4946) | function manipulationTarget( elem, content ) {
  function disableScript (line 4956) | function disableScript( elem ) {
  function restoreScript (line 4960) | function restoreScript( elem ) {
  function setGlobalEval (line 4973) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 4984) | function cloneCopyEvent( src, dest ) {
  function getAll (line 5018) | function getAll( context, tag ) {
  function fixInput (line 5029) | function fixInput( src, dest ) {
  function actualDisplay (line 5484) | function actualDisplay( name, doc ) {
  function defaultDisplay (line 5506) | function defaultDisplay( nodeName ) {
  function curCSS (line 5553) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 5601) | function addGetHookIf( conditionFn, hookFn ) {
  function computePixelPositionAndBoxSizingReliable (line 5641) | function computePixelPositionAndBoxSizingReliable() {
  function vendorPropName (line 5746) | function vendorPropName( style, name ) {
  function setPositiveNumber (line 5768) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 5776) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 5815) | function getWidthOrHeight( elem, name, extra ) {
  function showHide (line 5859) | function showHide( elements, show ) {
  function Tween (line 6157) | function Tween( elem, options, prop, end, easing ) {
  function createFxNow (line 6326) | function createFxNow() {
  function genFx (line 6334) | function genFx( type, includeWidth ) {
  function createTween (line 6354) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 6368) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 6501) | function propFilter( props, specialEasing ) {
  function Animation (line 6538) | function Animation( elem, properties, options ) {
  function addToPrefiltersOrTransports (line 7586) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7618) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7645) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 7665) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 7721) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 8179) | function done( status, nativeStatusText, responses, headers ) {
  function buildParams (line 8423) | function buildParams( prefix, obj, traditional, add ) {
  function getWindow (line 8917) | function getWindow( elem ) {
  function Lightbox (line 9240) | function Lightbox(options) {
  function addToAlbum (line 9366) | function addToAlbum($link) {
  function postResize (line 9499) | function postResize() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/lightbox2/2.8.1/js/lightbox.js
  function Lightbox (line 29) | function Lightbox(options) {
  function addToAlbum (line 155) | function addToAlbum($link) {
  function postResize (line 288) | function postResize() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/nprogress/0.2.0/nprogress.js
  function clamp (line 300) | function clamp(n, min, max) {
  function toBarPerc (line 311) | function toBarPerc(n) {
  function barPositionCSS (line 321) | function barPositionCSS(n, speed, ease) {
  function next (line 344) | function next() {
  function camelCase (line 369) | function camelCase(string) {
  function getVendorProp (line 375) | function getVendorProp(name) {
  function getStyleProp (line 390) | function getStyleProp(name) {
  function applyCss (line 395) | function applyCss(element, prop, value) {
  function hasClass (line 420) | function hasClass(element, name) {
  function addClass (line 429) | function addClass(element, name) {
  function removeClass (line 443) | function removeClass(element, name) {
  function classList (line 462) | function classList(element) {
  function removeElement (line 470) | function removeElement(element) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/province/distpicker.js
  function Distpicker (line 36) | function Distpicker(element, options) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/swfobject.js
  function f (line 4) | function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].ap...
  function K (line 4) | function K(X){if(J){X()}else{U[U.length]=X}}
  function s (line 4) | function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load"...
  function h (line 4) | function h(){if(T){V()}else{H()}}
  function V (line 4) | function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setA...
  function H (line 4) | function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[a...
  function z (line 4) | function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typ...
  function A (line 4) | function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}
  function P (line 4) | function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X...
  function p (line 4) | function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNo...
  function g (line 4) | function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML...
  function u (line 4) | function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(...
  function e (line 4) | function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttr...
  function y (line 4) | function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.s...
  function b (line 4) | function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function...
  function c (line 4) | function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}
  function C (line 4) | function C(X){return j.createElement(X)}
  function i (line 4) | function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}
  function F (line 4) | function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=pars...
  function v (line 4) | function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagN...
  function w (line 4) | function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z...
  function L (line 4) | function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/cropper/uploader.js
  function srcWrap (line 169) | function srcWrap( src, cb ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/image-upload/upload.js
  function addFile (line 214) | function addFile( file ) {
  function removeFile (line 371) | function removeFile( file ) {
  function updateTotalProgress (line 379) | function updateTotalProgress() {
  function updateStatus (line 398) | function updateStatus() {
  function setState (line 425) | function setState( val ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/requirejs/app.js
  function addFile (line 91) | function addFile( file ) {
  function removeFile (line 231) | function removeFile( file ) {
  function updateTotalProgress (line 239) | function updateTotalProgress() {
  function updateStatus (line 257) | function updateStatus() {
  function setState (line 284) | function setState( val ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/requirejs/require.js
  function G (line 7) | function G(b){return"[object Function]"===N.call(b)}
  function H (line 7) | function H(b){return"[object Array]"===N.call(b)}
  function v (line 7) | function v(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+...
  function U (line 7) | function U(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b))...
  function s (line 7) | function s(b,c){return ga.call(b,c)}
  function j (line 7) | function j(b,c){return s(b,c)&&b[c]}
  function B (line 7) | function B(b,c){for(var d in b)if(s(b,d)&&c(b[d],d))break}
  function V (line 7) | function V(b,c,d,g){c&&B(c,function(c,h){if(d||!s(b,h))g&&"object"===typ...
  function t (line 8) | function t(b,c){return function(){return c.apply(b,arguments)}}
  function da (line 8) | function da(b){throw b;}
  function ea (line 8) | function ea(b){if(!b)return b;var c=ca;v(b.split("."),function(b){c=c[b]...
  function C (line 8) | function C(b,c,d,g){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"...
  function ha (line 8) | function ha(b){function c(a,e,b){var f,n,c,d,g,h,i,I=e&&e.split("/");n=I...

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/server/fileupload2.php
  function mymd5 (line 155) | function mymd5( $file ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.custom.js
  function Callbacks (line 164) | function Callbacks( once ) {
  function Deferred (line 253) | function Deferred( func ) {
  function uncurryThis (line 508) | function uncurryThis( fn ) {
  function bindFn (line 514) | function bindFn( fn, context ) {
  function createObject (line 520) | function createObject( proto ) {
  function findHandlers (line 809) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 819) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 826) | function triggerHanders( events, args ) {
  function Uploader (line 1035) | function Uploader( opts ) {
  function Runtime (line 1233) | function Runtime( options ) {
  function RuntimeClient (line 1365) | function RuntimeClient( component, standalone ) {
  function Blob (line 1468) | function Blob( ruid, source ) {
  function File (line 1518) | function File( ruid, file ) {
  function FilePicker (line 1553) | function FilePicker( opts ) {
  function isArrayLike (line 1688) | function isArrayLike( obj ) {
  function Widget (line 1705) | function Widget( uploader ) {
  function Image (line 2065) | function Image( opts ) {
  function gid (line 2475) | function gid() {
  function WUFile (line 2486) | function WUFile( source ) {
  function Queue (line 2664) | function Queue() {
  function Transport (line 3264) | function Transport( opts ) {
  function CuteFile (line 3477) | function CuteFile( file, chunkSize ) {
  function send (line 4275) | function send(data) {
  function CompBase (line 4328) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 4360) | function Html5Runtime() {
  function detectVerticalSquash (line 5388) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 5440) | function detectSubsampling( img ) {
  function JPEGEncoder (line 5556) | function JPEGEncoder(quality) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.fis.js
  function uncurryThis (line 180) | function uncurryThis( fn ) {
  function bindFn (line 186) | function bindFn( fn, context ) {
  function createObject (line 192) | function createObject( proto ) {
  function findHandlers (line 481) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 491) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 498) | function triggerHanders( events, args ) {
  function Uploader (line 707) | function Uploader( opts ) {
  function Runtime (line 905) | function Runtime( options ) {
  function RuntimeClient (line 1037) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1143) | function DragAndDrop( opts ) {
  function isArrayLike (line 1191) | function isArrayLike( obj ) {
  function Widget (line 1208) | function Widget( uploader ) {
  function FilePaste (line 1500) | function FilePaste( opts ) {
  function Blob (line 1581) | function Blob( ruid, source ) {
  function File (line 1631) | function File( ruid, file ) {
  function FilePicker (line 1666) | function FilePicker( opts ) {
  function Image (line 1939) | function Image( opts ) {
  function gid (line 2349) | function gid() {
  function WUFile (line 2360) | function WUFile( source ) {
  function Queue (line 2538) | function Queue() {
  function Transport (line 3138) | function Transport( opts ) {
  function CuteFile (line 3351) | function CuteFile( file, chunkSize ) {
  function hashString (line 4291) | function hashString( str ) {
  function Md5 (line 4344) | function Md5() {
  function CompBase (line 4451) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 4483) | function Html5Runtime() {
  function JPEGEncoder (line 5522) | function JPEGEncoder(quality) {
  function detectVerticalSquash (line 6589) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 6641) | function detectSubsampling( img ) {
  function getFlashVersion (line 7532) | function getFlashVersion() {
  function FlashRuntime (line 7550) | function FlashRuntime() {
  function send (line 8023) | function send(data) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.flashonly.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function Blob (line 1165) | function Blob( ruid, source ) {
  function File (line 1215) | function File( ruid, file ) {
  function FilePicker (line 1250) | function FilePicker( opts ) {
  function isArrayLike (line 1385) | function isArrayLike( obj ) {
  function Widget (line 1402) | function Widget( uploader ) {
  function Image (line 1762) | function Image( opts ) {
  function gid (line 2172) | function gid() {
  function WUFile (line 2183) | function WUFile( source ) {
  function Queue (line 2361) | function Queue() {
  function Transport (line 2961) | function Transport( opts ) {
  function CuteFile (line 3174) | function CuteFile( file, chunkSize ) {
  function hashString (line 4114) | function hashString( str ) {
  function CompBase (line 4164) | function CompBase( owner, runtime ) {
  function getFlashVersion (line 4198) | function getFlashVersion() {
  function FlashRuntime (line 4216) | function FlashRuntime() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.html5only.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1168) | function DragAndDrop( opts ) {
  function isArrayLike (line 1216) | function isArrayLike( obj ) {
  function Widget (line 1233) | function Widget( uploader ) {
  function FilePaste (line 1525) | function FilePaste( opts ) {
  function Blob (line 1606) | function Blob( ruid, source ) {
  function File (line 1656) | function File( ruid, file ) {
  function FilePicker (line 1691) | function FilePicker( opts ) {
  function Image (line 1964) | function Image( opts ) {
  function gid (line 2374) | function gid() {
  function WUFile (line 2385) | function WUFile( source ) {
  function Queue (line 2563) | function Queue() {
  function Transport (line 3163) | function Transport( opts ) {
  function CuteFile (line 3376) | function CuteFile( file, chunkSize ) {
  function hashString (line 4316) | function hashString( str ) {
  function CompBase (line 4366) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 4398) | function Html5Runtime() {
  function detectVerticalSquash (line 5702) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 5754) | function detectSubsampling( img ) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1168) | function DragAndDrop( opts ) {
  function isArrayLike (line 1216) | function isArrayLike( obj ) {
  function Widget (line 1233) | function Widget( uploader ) {
  function FilePaste (line 1525) | function FilePaste( opts ) {
  function Blob (line 1606) | function Blob( ruid, source ) {
  function File (line 1656) | function File( ruid, file ) {
  function FilePicker (line 1691) | function FilePicker( opts ) {
  function Image (line 1964) | function Image( opts ) {
  function gid (line 2374) | function gid() {
  function WUFile (line 2385) | function WUFile( source ) {
  function Queue (line 2563) | function Queue() {
  function Transport (line 3163) | function Transport( opts ) {
  function CuteFile (line 3376) | function CuteFile( file, chunkSize ) {
  function hashString (line 4316) | function hashString( str ) {
  function Md5 (line 4369) | function Md5() {
  function CompBase (line 4476) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 4508) | function Html5Runtime() {
  function JPEGEncoder (line 5547) | function JPEGEncoder(quality) {
  function detectVerticalSquash (line 6614) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 6666) | function detectSubsampling( img ) {
  function getFlashVersion (line 7557) | function getFlashVersion() {
  function FlashRuntime (line 7575) | function FlashRuntime() {
  function send (line 8048) | function send(data) {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.noimage.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1168) | function DragAndDrop( opts ) {
  function isArrayLike (line 1216) | function isArrayLike( obj ) {
  function Widget (line 1233) | function Widget( uploader ) {
  function FilePaste (line 1525) | function FilePaste( opts ) {
  function Blob (line 1606) | function Blob( ruid, source ) {
  function File (line 1656) | function File( ruid, file ) {
  function FilePicker (line 1691) | function FilePicker( opts ) {
  function gid (line 1967) | function gid() {
  function WUFile (line 1978) | function WUFile( source ) {
  function Queue (line 2156) | function Queue() {
  function Transport (line 2756) | function Transport( opts ) {
  function CuteFile (line 2969) | function CuteFile( file, chunkSize ) {
  function hashString (line 3909) | function hashString( str ) {
  function CompBase (line 3959) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3991) | function Html5Runtime() {
  function getFlashVersion (line 4623) | function getFlashVersion() {
  function FlashRuntime (line 4641) | function FlashRuntime() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.nolog.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1168) | function DragAndDrop( opts ) {
  function isArrayLike (line 1216) | function isArrayLike( obj ) {
  function Widget (line 1233) | function Widget( uploader ) {
  function FilePaste (line 1525) | function FilePaste( opts ) {
  function Blob (line 1606) | function Blob( ruid, source ) {
  function File (line 1656) | function File( ruid, file ) {
  function FilePicker (line 1691) | function FilePicker( opts ) {
  function Image (line 1964) | function Image( opts ) {
  function gid (line 2374) | function gid() {
  function WUFile (line 2385) | function WUFile( source ) {
  function Queue (line 2563) | function Queue() {
  function Transport (line 3163) | function Transport( opts ) {
  function CuteFile (line 3376) | function CuteFile( file, chunkSize ) {
  function hashString (line 4316) | function hashString( str ) {
  function Md5 (line 4369) | function Md5() {
  function CompBase (line 4476) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 4508) | function Html5Runtime() {
  function JPEGEncoder (line 5547) | function JPEGEncoder(quality) {
  function detectVerticalSquash (line 6614) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 6666) | function detectSubsampling( img ) {
  function getFlashVersion (line 7557) | function getFlashVersion() {
  function FlashRuntime (line 7575) | function FlashRuntime() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/webuploader/0.1.5/webuploader.withoutimage.js
  function uncurryThis (line 205) | function uncurryThis( fn ) {
  function bindFn (line 211) | function bindFn( fn, context ) {
  function createObject (line 217) | function createObject( proto ) {
  function findHandlers (line 506) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 516) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 523) | function triggerHanders( events, args ) {
  function Uploader (line 732) | function Uploader( opts ) {
  function Runtime (line 930) | function Runtime( options ) {
  function RuntimeClient (line 1062) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1168) | function DragAndDrop( opts ) {
  function isArrayLike (line 1216) | function isArrayLike( obj ) {
  function Widget (line 1233) | function Widget( uploader ) {
  function FilePaste (line 1525) | function FilePaste( opts ) {
  function Blob (line 1606) | function Blob( ruid, source ) {
  function File (line 1656) | function File( ruid, file ) {
  function FilePicker (line 1691) | function FilePicker( opts ) {
  function gid (line 1967) | function gid() {
  function WUFile (line 1978) | function WUFile( source ) {
  function Queue (line 2156) | function Queue() {
  function Transport (line 2747) | function Transport( opts ) {
  function CuteFile (line 2960) | function CuteFile( file, chunkSize ) {
  function hashString (line 3893) | function hashString( str ) {
  function CompBase (line 3943) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3975) | function Html5Runtime() {
  function getFlashVersion (line 4607) | function getFlashVersion() {
  function FlashRuntime (line 4625) | function FlashRuntime() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/zTree/v3/api/apiCss/jquery.ztree.core-3.5.js
  function e (line 63) | function e(){i.addNodes(d,a,h,c==!0)}

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/zTree/v3/js/jquery.ztree.all-3.5.js
  function addCallback (line 1527) | function addCallback() {
  function copyCallback (line 2538) | function copyCallback() {
  function moveCallback (line 2568) | function moveCallback() {
  function _docMouseMove (line 2664) | function _docMouseMove(event) {
  function _docMouseUp (line 2951) | function _docMouseUp(event) {
  function _docSelect (line 3055) | function _docSelect() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/zTree/v3/js/jquery.ztree.core-3.5.js
  function addCallback (line 1526) | function addCallback() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/zTree/v3/js/jquery.ztree.exedit-3.5.js
  function copyCallback (line 194) | function copyCallback() {
  function moveCallback (line 224) | function moveCallback() {
  function _docMouseMove (line 320) | function _docMouseMove(event) {
  function _docMouseUp (line 607) | function _docMouseUp(event) {
  function _docSelect (line 711) | function _docSelect() {

FILE: ymall-web-admin/src/main/webapp/static/assets/lib/zTree/v3/js/jquery.ztree.exedit.js
  function copyCallback (line 182) | function copyCallback() {
  function moveCallback (line 211) | function moveCallback() {
  function _docMouseMove (line 306) | function _docMouseMove(event) {
  function _docMouseUp (line 591) | function _docMouseUp(event) {
  function _docSelect (line 696) | function _docSelect() {

FILE: ymall-web-admin/src/main/webapp/static/assets/plugins/dropzone/dropzone-amd-module.js
  function defineProperties (line 15) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _possibleConstructorReturn (line 17) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 19) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function _classCallCheck (line 21) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Emitter (line 54) | function Emitter() {
  function Dropzone (line 1023) | function Dropzone(el, options) {
  function ExifRestore (line 3299) | function ExifRestore() {
  function __guard__ (line 3529) | function __guard__(value, transform) {
  function __guardMethod__ (line 3532) | function __guardMethod__(obj, methodName, transform) {

FILE: ymall-web-admin/src/main/webapp/static/assets/plugins/dropzone/dropzone.js
  function defineProperties (line 3) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _possibleConstructorReturn (line 5) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 7) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function _classCallCheck (line 9) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Emitter (line 42) | function Emitter() {
  function getBase64Image (line 976) | function getBase64Image(img) {
  function Dropzone (line 1049) | function Dropzone(el, options) {
  function ExifRestore (line 3325) | function ExifRestore() {
  function __guard__ (line 3555) | function __guard__(value, transform) {
  function __guardMethod__ (line 3558) | function __guardMethod__(obj, methodName, transform) {

FILE: ymall-web-admin/src/main/webapp/static/assets/plugins/iCheck/icheck.js
  function operate (line 300) | function operate(input, direct, method) {
  function on (line 345) | function on(input, state, keep) {
  function off (line 410) | function off(input, state, keep) {
  function tidy (line 444) | function tidy(input, callback) {
  function option (line 460) | function option(input, state, regular) {
  function capitalize (line 466) | function capitalize(string) {
  function callbacks (line 470) | function callbacks(input, checked, callback, keep) {

FILE: ymall-web-admin/src/main/webapp/static/assets/plugins/treeTable/jquery.treeTable.js
  function hoverActiveNode (line 89) | function hoverActiveNode(event) {
  function initRelation (line 114) | function initRelation($trs, hideLevel) {
  function shut (line 172) | function shut(id) {
  function open (line 181) | function open(id) {
  function formatNode (line 194) | function formatNode(tr) {

FILE: ymall-web-admin/src/main/webapp/static/assets/plugins/wangEditor/wangEditor.js
  function createElemByHTML (line 57) | function createElemByHTML(html) {
  function isDOMList (line 65) | function isDOMList(selector) {
  function querySelectorAll (line 76) | function querySelectorAll(selector) {
  function DomElement (line 89) | function DomElement(selector) {
  function $ (line 527) | function $(selector) {
  function objForEach (line 851) | function objForEach(obj, fn) {
  function arrForEach (line 865) | function arrForEach(fakeArr, fn) {
  function getRandom (line 880) | function getRandom(prefix) {
  function replaceHtmlSymbol (line 885) | function replaceHtmlSymbol(html) {
  function isFunction (line 896) | function isFunction(fn) {
  function Bold (line 904) | function Bold(editor) {
  function DropList (line 981) | function DropList(menu, opt) {
  function Head (line 1106) | function Head(editor) {
  function Panel (line 1173) | function Panel(menu, opt) {
  function Link (line 1360) | function Link(editor) {
  function Italic (line 1516) | function Italic(editor) {
  function Redo (line 1569) | function Redo(editor) {
  function StrikeThrough (line 1597) | function StrikeThrough(editor) {
  function Underline (line 1650) | function Underline(editor) {
  function Undo (line 1703) | function Undo(editor) {
  function List (line 1731) | function List(editor) {
  function Justify (line 1808) | function Justify(editor) {
  function ForeColor (line 1846) | function ForeColor(editor) {
  function BackColor (line 1890) | function BackColor(editor) {
  function Quote (line 1934) | function Quote(editor) {
  function Code (line 2002) | function Code(editor) {
  function Emoticon (line 2137) | function Emoticon(editor) {
  function Table (line 2244) | function Table(editor) {
  function Video (line 2589) | function Video(editor) {
  function Image (line 2664) | function Image(editor) {
  function Menus (line 2919) | function Menus(editor) {
  function getPasteText (line 3043) | function getPasteText(e) {
  function getPasteHtml (line 3056) | function getPasteHtml(e, filterStyle) {
  function getPasteImgs (line 3098) | function getPasteImgs(e) {
  function getChildrenJSON (line 3127) | function getChildrenJSON($elem) {
  function Text (line 3167) | function Text(editor) {
  function saveRange (line 3269) | function saveRange(e) {
  function insertEmptyP (line 3293) | function insertEmptyP($selectionElem) {
  function pHandle (line 3302) | function pHandle(e) {
  function codeHandle (line 3343) | function codeHandle(e) {
  function canDo (line 3458) | function canDo() {
  function resetTime (line 3468) | function resetTime() {
  function Command (line 3671) | function Command(editor) {
  function API (line 3767) | function API(editor) {
  function Progress (line 3942) | function Progress(editor) {
  function UploadImg (line 4013) | function UploadImg(editor) {
  function Editor (line 4331) | function Editor(toolbarSelector, textSelector) {

FILE: ymall-web-admin/src/main/webapp/static/assets/static/h-ui.admin/js/H-ui.admin.js
  function tabNavallwidth (line 13) | function tabNavallwidth(){
  function Huiasidedisplay (line 34) | function Huiasidedisplay(){
  function getskincookie (line 40) | function getskincookie(){
  function Hui_admin_tab (line 52) | function Hui_admin_tab(obj){
  function min_titleList (line 90) | function min_titleList(){
  function creatIframe (line 97) | function creatIframe(href,titleName){
  function removeIframe (line 150) | function removeIframe(){
  function removeIframeAll (line 164) | function removeIframeAll(){
  function layer_show (line 185) | function layer_show(title,url,w,h){
  function layer_close (line 209) | function layer_close(){
  function getHTMLDate (line 215) | function getHTMLDate(obj) {
  function toNavPos (line 305) | function toNavPos(){

FILE: ymall-web-admin/src/main/webapp/static/assets/static/h-ui/js/H-ui.js
  function stopDefault (line 75) | function stopDefault(e) {
  function encode (line 103) | function encode(s) {
  function decode (line 106) | function decode(s) {
  function stringifyCookieValue (line 109) | function stringifyCookieValue(value) {
  function parseCookieValue (line 112) | function parseCookieValue(s) {
  function read (line 126) | function read(s, converter) {
  function deepSerialize (line 442) | function deepSerialize(extraData) {
  function fileUploadXhr (line 458) | function fileUploadXhr(a) {
  function fileUploadIframe (line 523) | function fileUploadIframe(a) {
  function doAjaxSubmit (line 1059) | function doAjaxSubmit(e) {
  function captureSubmittingElement (line 1068) | function captureSubmittingElement(e) {
  function log (line 1473) | function log() {
  function update (line 1510) | function update() {
  function args (line 2497) | function args(elem) {
  function clearPlaceholder (line 2509) | function clearPlaceholder(event, value) {
  function setPlaceholder (line 2527) | function setPlaceholder() {
  function safeActiveElement (line 2559) | function safeActiveElement() {
  function EmailSug (line 2581) | function EmailSug(elem, options) {
  function operate (line 3249) | function operate(input, direct, method) {
  function on (line 3297) | function on(input, state, keep) {
  function off (line 3371) | function off(input, state, keep) {
  function tidy (line 3411) | function tidy(input, callback) {
  function option (line 3429) | function option(input, state, regular) {
  function capitalize (line 3436) | function capitalize(string) {
  function callbacks (line 3441) | function callbacks(input, checked, callback, keep) {
  function HuiaddFavorite (line 4277) | function HuiaddFavorite(obj) {
  function Huisethome (line 4294) | function Huisethome(obj){
  function displaynavbar (line 4316) | function displaynavbar(obj){
  function gettagval (line 4562) | function gettagval(obj) {
  function unique (line 4577) | function unique(o, type){
  function Plugin (line 4985) | function Plugin(option) {
  function bottomView (line 5099) | function bottomView(i) {
  function Plugin (line 5326) | function Plugin(option, _relatedTarget) {
  function getParent (line 5383) | function getParent($this) {
  function clearMenus (line 5392) | function clearMenus(e) {
  function Plugin (line 5450) | function Plugin(option) {
  function transitionEnd (line 5515) | function transitionEnd() {
  function complete (line 5810) | function complete() {
  function Plugin (line 5968) | function Plugin(option) {
  function Plugin (line 6072) | function Plugin(option) {
  function removeElement (line 6146) | function removeElement() {
  function Plugin (line 6156) | function Plugin(option) {
  function noop (line 6227) | function noop() {}
  function defineBridget (line 6229) | function defineBridget($) {
  function createNewSlider (line 6351) | function createNewSlider(element, options) {
  function elementOrParentIsFixed (line 7381) | function elementOrParentIsFixed(element) {
  function UTCDate (line 7394) | function UTCDate() {
  function UTCToday (line 7398) | function UTCToday() {

FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/handlebars-4.0.5.js
  function e (line 1) | function e(s){if(r[s])return r[s].exports;var i=r[s]={exports:{},id:s,lo...
  function s (line 1) | function s(){var t=v();return t.compile=function(e,r){return l.compile(e...
  function s (line 1) | function s(){var t=new o.HandlebarsEnvironment;return f.extend(t,o),t.Sa...
  function s (line 1) | function s(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators...
  function r (line 1) | function r(t){return l[t]}
  function s (line 1) | function s(t){for(var e=1;e<arguments.length;e++)for(var r in arguments[...
  function i (line 1) | function i(t,e){for(var r=0,s=t.length;r<s;r++)if(t[r]===e)return r;retu...
  function a (line 1) | function a(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if...
  function n (line 1) | function n(t){return!t&&0!==t||!(!m(t)||0!==t.length)}
  function o (line 1) | function o(t){var e=s({},t);return e._parent=t,e}
  function c (line 1) | function c(t,e){return t.path=e,t}
  function h (line 1) | function h(t,e){return(t?t+".":"")+e}
  function r (line 1) | function r(t,e){var i=e&&e.loc,a=void 0,n=void 0;i&&(a=i.start.line,n=i....
  function s (line 1) | function s(t){n["default"](t),c["default"](t),l["default"](t),u["default...
  function r (line 1) | function r(e,r,a){h&&(h.key=e,h.index=r,h.first=0===r,h.last=!!a,l&&(h.c...
  function s (line 1) | function s(t){n["default"](t)}
  function r (line 1) | function r(t){this.string=t}
  function s (line 1) | function s(t){var e=t&&t[0]||1,r=v.COMPILER_REVISION;if(e!==r){if(e<r){v...
  function i (line 1) | function i(t,e){function r(r,s,i){i.hash&&(s=d.extend({},s,i.hash),i.ids...
  function a (line 1) | function a(t,e,r,s,i,a,n){function o(e){var i=arguments.length<=1||void ...
  function n (line 1) | function n(t,e,r){return t?t.call||r.name||(r.name=t,t=r.partials[t]):t=...
  function o (line 1) | function o(t,e,r){r.partial=!0,r.ids&&(r.data.contextPath=r.ids[0]||r.da...
  function c (line 1) | function c(){return""}
  function h (line 1) | function h(t,e){return e&&"root"in e||(e=e?v.createFrame(e):{},e.root=t),e}
  function l (line 1) | function l(t,e,r,s,i,a){if(t.decorator){var n={};e=t.decorator(e,n,r,s&&...
  function s (line 1) | function s(t,e){if("Program"===t.type)return t;o["default"].yy=f,f.locIn...
  function t (line 1) | function t(){this.yy={}}
  function e (line 2) | function e(){var t;return t=r.lexer.lex()||1,"number"!=typeof t&&(t=r.sy...
  function i (line 2) | function i(t,r){return e.yytext=e.yytext.substr(t,e.yyleng-r)}
  function s (line 2) | function s(){var t=arguments.length<=0||void 0===arguments[0]?{}:argumen...
  function i (line 2) | function i(t,e,r){void 0===e&&(e=t.length);var s=t[e-1],i=t[e-2];return ...
  function a (line 2) | function a(t,e,r){void 0===e&&(e=-1);var s=t[e+1],i=t[e+2];return s?"Con...
  function n (line 2) | function n(t,e,r){var s=t[null==e?0:e+1];if(s&&"ContentStatement"===s.ty...
  function o (line 2) | function o(t,e,r){var s=t[null==e?t.length-1:e-1];if(s&&"ContentStatemen...
  function s (line 2) | function s(){this.parents=[]}
  function i (line 2) | function i(t){this.acceptRequired(t,"path"),this.acceptArray(t.params),t...
  function a (line 2) | function a(t){i.call(this,t),this.acceptKey(t,"program"),this.acceptKey(...
  function n (line 2) | function n(t){this.acceptRequired(t,"name"),this.acceptArray(t.params),t...
  function s (line 2) | function s(t,e){if(e=e.path?e.path.original:e,t.path.original!==e){var r...
  function i (line 2) | function i(t,e){this.source=t,this.start={line:e.first_line,column:e.fir...
  function a (line 2) | function a(t){return/^\[.*\]$/.test(t)?t.substr(1,t.length-2):t}
  function n (line 2) | function n(t,e){return{open:"~"===t.charAt(2),close:"~"===e.charAt(e.len...
  function o (line 2) | function o(t){return t.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/...
  function c (line 2) | function c(t,e,r){r=this.locInfo(r);for(var s=t?"@":"",i=[],a=0,n="",o=0...
  function h (line 2) | function h(t,e,r,s,i,a){var n=s.charAt(3)||s.charAt(2),o="{"!==n&&"&"!==...
  function l (line 2) | function l(t,e,r,i){s(t,r),i=this.locInfo(i);var a={type:"Program",body:...
  function p (line 2) | function p(t,e,r,i,a,n){i&&i.path&&s(t,i);var o=/\*/.test(t.open);e.bloc...
  function u (line 2) | function u(t,e){if(!e&&t.length){var r=t[0].loc,s=t[t.length-1].loc;r&&s...
  function f (line 2) | function f(t,e,r,i){return s(t,r),{type:"PartialBlockStatement",name:t.p...
  function s (line 2) | function s(){}
  function i (line 2) | function i(t,e,r){if(null==t||"string"!=typeof t&&"Program"!==t.type)thr...
  function a (line 2) | function a(t,e,r){function s(){var s=r.parse(t,e),i=(new r.Compiler).com...
  function n (line 2) | function n(t,e){if(t===e)return!0;if(p.isArray(t)&&p.isArray(e)&&t.lengt...
  function o (line 2) | function o(t){if(!t.path.parts){var e=t.path;t.path={type:"PathExpressio...
  function s (line 2) | function s(t){this.value=t}
  function i (line 2) | function i(){}
  function a (line 2) | function a(t,e,r,s){var i=e.popStack(),a=0,n=r.length;for(t&&n--;a<n;a++...
  function s (line 3) | function s(t,e,r){if(a.isArray(t)){for(var s=[],i=0,n=t.length;i<n;i++)s...
  function i (line 3) | function i(t){this.srcFile=t,this.source=[]}

FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/highlight.9.1.0.pack.js
  function r (line 1) | function r(e){return e.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").repl...
  function t (line 1) | function t(e){return e.nodeName.toLowerCase()}
  function n (line 1) | function n(e,r){var t=e&&e.exec(r);return t&&0==t.index}
  function a (line 1) | function a(e){return/^(no-?highlight|plain|text)$/i.test(e)}
  function c (line 1) | function c(e){var r,t,n,c=e.className+" ";if(c+=e.parentNode?e.parentNod...
  function i (line 1) | function i(e,r){var t,n={};for(t in e)n[t]=e[t];if(r)for(t in r)n[t]=r[t...
  function o (line 1) | function o(e){var r=[];return function n(e,a){for(var c=e.firstChild;c;c...
  function s (line 1) | function s(e,n,a){function c(){return e.length&&n.length?e[0].offset!=n[...
  function u (line 1) | function u(e){function r(e){return e&&e.source||e}function t(t,n){return...
  function l (line 1) | function l(e,t,a,c){function i(e,r){for(var t=0;t<r.c.length;t++)if(n(r....
  function f (line 1) | function f(e,t){t=t||w.languages||Object.keys(y);var n={r:0,value:r(e)},...
  function b (line 1) | function b(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,fun...
  function g (line 1) | function g(e,r,t){var n=r?C[r]:t,a=[e.trim()];return e.match(/\bhljs\b/)...
  function p (line 1) | function p(e){var r=c(e);if(!a(r)){var t;w.useBR?(t=document.createEleme...
  function h (line 1) | function h(e){w=i(w,e)}
  function d (line 1) | function d(){if(!d.called){d.called=!0;var e=document.querySelectorAll("...
  function m (line 1) | function m(){addEventListener("DOMContentLoaded",d,!1),addEventListener(...
  function v (line 1) | function v(r,t){var n=y[r]=t(e);n.aliases&&n.aliases.forEach(function(e)...
  function N (line 1) | function N(){return Object.keys(y)}
  function E (line 1) | function E(e){return e=(e||"").toLowerCase(),y[e]||y[C[e]]}

FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/marked.js
  function e (line 1) | function e(e){this.tokens=[],this.tokens.links={},this.options=e||a.defa...
  function t (line 1) | function t(e,t){if(this.options=t||a.defaults,this.links=e,this.rules=u....
  function n (line 1) | function n(e){this.options=e||{}}
  function r (line 1) | function r(e){this.tokens=[],this.token=null,this.options=e||a.defaults,...
  function s (line 1) | function s(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&amp;").replace(...
  function i (line 1) | function i(e){return e.replace(/&([#\w]+);/g,function(e,t){return t=t.to...
  function l (line 1) | function l(e,t){return e=e.source,t=t||"",function n(r,s){return r?(s=s....
  function o (line 1) | function o(){}
  function h (line 1) | function h(e){for(var t,n,r=1;r<arguments.length;r++){t=arguments[r];for...
  function a (line 1) | function a(t,n,i){if(i||"function"==typeof n){i||(i=n,n=null),n=h({},a.d...

FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/swagger-oauth.js
  function handleLogin (line 1) | function handleLogin(){var e=[],o=window.swaggerUiAuth.authSchemes||wind...
  function handleLogout (line 1) | function handleLogout(){for(key in window.swaggerUi.api.clientAuthorizat...
  function initOAuth (line 1) | function initOAuth(e){var o=e||{},i=[];return appName=o.appName||i.push(...
  function clientCredentialsFlow (line 1) | function clientCredentialsFlow(e,o,i){var n={client_id:clientId,client_s...

FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/swagger-ui.js
  function clippyCopiedCallback (line 858) | function clippyCopiedCallback() {
  function log (line 869) | function log(){
  function s (line 3169) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function each (line 3169) | function each(obj,cb){if(obj)Object.keys(obj).forEach(function(key){cb(o...
  function has (line 3169) | function has(obj,key){return{}.hasOwnProperty.call(obj,key)}
  function sanitizeHtml (line 3169) | function sanitizeHtml(html,options,_recursing){var result="";function Fr...
  function init (line 3169) | function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst...
  function toByteArray (line 3169) | function toByteArray(b64){var i,j,l,tmp,placeHolders,arr;var len=b64.len...
  function tripletToBase64 (line 3169) | function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&6...
  function encodeChunk (line 3169) | function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=st...
  function fromByteArray (line 3169) | function fromByteArray(uint8){var tmp;var len=uint8.length;var extraByte...
  function typedArraySupport (line 3169) | function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__...
  function kMaxLength (line 3169) | function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:10737...
  function createBuffer (line 3169) | function createBuffer(that,length){if(kMaxLength()<length){throw new Ran...
  function Buffer (line 3169) | function Buffer(arg,encodingOrOffset,length){if(!Buffer.TYPED_ARRAY_SUPP...
  function from (line 3169) | function from(that,value,encodingOrOffset,length){if(typeof value==="num...
  function assertSize (line 3169) | function assertSize(size){if(typeof size!=="number"){throw new TypeError...
  function alloc (line 3169) | function alloc(that,size,fill,encoding){assertSize(size);if(size<=0){ret...
  function allocUnsafe (line 3169) | function allocUnsafe(that,size){assertSize(size);that=createBuffer(that,...
  function fromString (line 3169) | function fromString(that,string,encoding){if(typeof encoding!=="string"|...
  function fromArrayLike (line 3169) | function fromArrayLike(that,array){var length=array.length<0?0:checked(a...
  function fromArrayBuffer (line 3169) | function fromArrayBuffer(that,array,byteOffset,length){array.byteLength;...
  function fromObject (line 3169) | function fromObject(that,obj){if(Buffer.isBuffer(obj)){var len=checked(o...
  function checked (line 3169) | function checked(length){if(length>=kMaxLength()){throw new RangeError("...
  function SlowBuffer (line 3169) | function SlowBuffer(length){if(+length!=length){length=0}return Buffer.a...
  function byteLength (line 3169) | function byteLength(string,encoding){if(Buffer.isBuffer(string)){return ...
  function slowToString (line 3169) | function slowToString(encoding,start,end){var loweredCase=false;if(start...
  function swap (line 3169) | function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}
  function bidirectionalIndexOf (line 3169) | function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buf...
  function arrayIndexOf (line 3169) | function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;v...
  function hexWrite (line 3169) | function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var...
  function utf8Write (line 3169) | function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToByt...
  function asciiWrite (line 3169) | function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToB...
  function latin1Write (line 3169) | function latin1Write(buf,string,offset,length){return asciiWrite(buf,str...
  function base64Write (line 3169) | function base64Write(buf,string,offset,length){return blitBuffer(base64T...
  function ucs2Write (line 3169) | function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leTo...
  function base64Slice (line 3169) | function base64Slice(buf,start,end){if(start===0&&end===buf.length){retu...
  function utf8Slice (line 3169) | function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[...
  function decodeCodePointsArray (line 3169) | function decodeCodePointsArray(codePoints){var len=codePoints.length;if(...
  function asciiSlice (line 3169) | function asciiSlice(buf,start,end){var ret="";end=Math.min(buf.length,en...
  function latin1Slice (line 3169) | function latin1Slice(buf,start,end){var ret="";end=Math.min(buf.length,e...
  function hexSlice (line 3169) | function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)s...
  function utf16leSlice (line 3169) | function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var ...
  function checkOffset (line 3169) | function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw ...
  function checkInt (line 3170) | function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf)...
  function objectWriteUInt16 (line 3170) | function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)val...
  function objectWriteUInt32 (line 3170) | function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)val...
  function checkIEEE754 (line 3170) | function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.le...
  function writeFloat (line 3170) | function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert...
  function writeDouble (line 3170) | function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAsser...
  function base64clean (line 3170) | function base64clean(str){str=stringtrim(str).replace(INVALID_BASE64_RE,...
  function stringtrim (line 3170) | function stringtrim(str){if(str.trim)return str.trim();return str.replac...
  function toHex (line 3170) | function toHex(n){if(n<16)return"0"+n.toString(16);return n.toString(16)}
  function utf8ToBytes (line 3170) | function utf8ToBytes(string,units){units=units||Infinity;var codePoint;v...
  function asciiToBytes (line 3170) | function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;++i...
  function utf16leToBytes (line 3170) | function utf16leToBytes(str,units){var c,hi,lo;var byteArray=[];for(var ...
  function base64ToBytes (line 3170) | function base64ToBytes(str){return base64.toByteArray(base64clean(str))}
  function blitBuffer (line 3170) | function blitBuffer(src,dst,offset,length){for(var i=0;i<length;++i){if(...
  function isnan (line 3170) | function isnan(val){return val!==val}
  function isArray (line 3170) | function isArray(arg){if(Array.isArray){return Array.isArray(arg)}return...
  function isBoolean (line 3170) | function isBoolean(arg){return typeof arg==="boolean"}
  function isNull (line 3170) | function isNull(arg){return arg===null}
  function isNullOrUndefined (line 3170) | function isNullOrUndefined(arg){return arg==null}
  function isNumber (line 3170) | function isNumber(arg){return typeof arg==="number"}
  function isString (line 3170) | function isString(arg){return typeof arg==="string"}
  function isSymbol (line 3170) | function isSymbol(arg){return typeof arg==="symbol"}
  function isUndefined (line 3170) | function isUndefined(arg){return arg===void 0}
  function isRegExp (line 3170) | function isRegExp(re){return objectToString(re)==="[object RegExp]"}
  function isObject (line 3170) | function isObject(arg){return typeof arg==="object"&&arg!==null}
  function isDate (line 3170) | function isDate(d){return objectToString(d)==="[object Date]"}
  function isError (line 3170) | function isError(e){return objectToString(e)==="[object Error]"||e insta...
  function isFunction (line 3170) | function isFunction(arg){return typeof arg==="function"}
  function isPrimitive (line 3170) | function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typ...
  function objectToString (line 3170) | function objectToString(o){return Object.prototype.toString.call(o)}
  function formatAttrs (line 3170) | function formatAttrs(attributes,opts){if(!attributes)return;var output="...
  function renderTag (line 3170) | function renderTag(elem,opts){if(elem.name==="svg")opts={decodeEntities:...
  function renderDirective (line 3170) | function renderDirective(elem){return"<"+elem.data+">"}
  function renderText (line 3170) | function renderText(elem,opts){var data=elem.data||"";if(opts.decodeEnti...
  function renderCdata (line 3170) | function renderCdata(elem){return"<![CDATA["+elem.children[0].data+"]]>"}
  function renderComment (line 3170) | function renderComment(elem){return"<!--"+elem.data+"-->"}
  function DomHandler (line 3170) | function DomHandler(callback,options,elementCB){if(typeof callback==="ob...
  method firstChild (line 3170) | get firstChild(){var children=this.children;return children&&children[0]...
  method lastChild (line 3170) | get lastChild(){var children=this.children;return children&&children[chi...
  method nodeType (line 3170) | get nodeType(){return nodeTypes[this.type]||nodeTypes.element}
  function getAttribCheck (line 3170) | function getAttribCheck(attrib,value){if(typeof value==="function"){retu...
  function combineFuncs (line 3170) | function combineFuncs(a,b){return function(elem){return a(elem)||b(elem)}}
  function filter (line 3170) | function filter(test,element,recurse,limit){if(!Array.isArray(element))e...
  function find (line 3170) | function find(test,elems,recurse,limit){var result=[],childs;for(var i=0...
  function findOneChild (line 3170) | function findOneChild(test,elems){for(var i=0,l=elems.length;i<l;i++){if...
  function findOne (line 3170) | function findOne(test,elems){var elem=null;for(var i=0,l=elems.length;i<...
  function existsOne (line 3170) | function existsOne(test,elems){for(var i=0,l=elems.length;i<l;i++){if(is...
  function findAll (line 3170) | function findAll(test,elems){var result=[];for(var i=0,j=elems.length;i<...
  function getInnerHTML (line 3170) | function getInnerHTML(elem,opts){return elem.children?elem.children.map(...
  function getText (line 3170) | function getText(elem){if(Array.isArray(elem))return elem.map(getText).j...
  function getStrictDecoder (line 3170) | function getStrictDecoder(map){var keys=Object.keys(map).join("|"),repla...
  function replacer (line 3170) | function replacer(str){if(str.substr(-1)!==";")str+=";";return replace(s...
  function sorter (line 3170) | function sorter(a,b){return a<b?1:-1}
  function getReplacer (line 3170) | function getReplacer(map){return function replace(str){if(str.charAt(1)=...
  function decodeCodePoint (line 3171) | function decodeCodePoint(codePoint){if(codePoint>=55296&&codePoint<=5734...
  function getInverseObj (line 3171) | function getInverseObj(obj){return Object.keys(obj).sort().reduce(functi...
  function getInverseReplacer (line 3171) | function getInverseReplacer(inverse){var single=[],multiple=[];Object.ke...
  function singleCharReplacer (line 3171) | function singleCharReplacer(c){return"&#x"+c.charCodeAt(0).toString(16)....
  function astralReplacer (line 3171) | function astralReplacer(c){var high=c.charCodeAt(0);var low=c.charCodeAt...
  function getInverse (line 3171) | function getInverse(inverse,re){function func(name){return inverse[name]...
  function escapeXML (line 3171) | function escapeXML(data){return data.replace(re_xmlChars,singleCharRepla...
  function EventEmitter (line 3171) | function EventEmitter(){this._events=this._events||{};this._maxListeners...
  function g (line 3171) | function g(){this.removeListener(type,g);if(!fired){fired=true;listener....
  function isFunction (line 3172) | function isFunction(arg){return typeof arg==="function"}
  function isNumber (line 3172) | function isNumber(arg){return typeof arg==="number"}
  function isObject (line 3172) | function isObject(arg){return typeof arg==="object"&&arg!==null}
  function isUndefined (line 3172) | function isUndefined(arg){return arg===void 0}
  function CollectingHandler (line 3172) | function CollectingHandler(cbs){this._cbs=cbs||{};this.events=[]}
  function FeedHandler (line 3172) | function FeedHandler(callback,options){this.init(callback,options)}
  function getElements (line 3172) | function getElements(what,where){return DomUtils.getElementsByTagName(wh...
  function getOneElement (line 3172) | function getOneElement(what,where){return DomUtils.getElementsByTagName(...
  function fetch (line 3172) | function fetch(what,where,recurse){return DomUtils.getText(DomUtils.getE...
  function addConditionally (line 3172) | function addConditionally(obj,prop,what,where,recurse){var tmp=fetch(wha...
  function Parser (line 3172) | function Parser(cbs,options){this._options=options||{};this._cbs=cbs||{}...
  function ProxyHandler (line 3172) | function ProxyHandler(cbs){this._cbs=cbs||{}}
  function Stream (line 3172) | function Stream(options){Parser.call(this,new Cbs(this),options)}
  function Cbs (line 3172) | function Cbs(scope){this.scope=scope}
  function whitespace (line 3172) | function whitespace(c){return c===" "||c==="\n"||c==="\t"||c==="\f"||c==...
  function characterState (line 3172) | function characterState(char,SUCCESS){return function(c){if(c===char)thi...
  function ifElseState (line 3172) | function ifElseState(upper,SUCCESS,FAILURE){var lower=upper.toLowerCase(...
  function consumeSpecialNameChar (line 3172) | function consumeSpecialNameChar(upper,NEXT_STATE){var lower=upper.toLowe...
  function Tokenizer (line 3172) | function Tokenizer(options,cbs){this._state=TEXT;this._buffer="";this._s...
  function Stream (line 3173) | function Stream(cbs,options){var parser=this._parser=new Parser(cbs,opti...
  function defineProp (line 3173) | function defineProp(name,value){delete module.exports[name];module.expor...
  method FeedHandler (line 3173) | get FeedHandler(){return defineProp("FeedHandler",require("./FeedHandler...
  method Stream (line 3173) | get Stream(){return defineProp("Stream",require("./Stream.js"))}
  method WritableStream (line 3173) | get WritableStream(){return defineProp("WritableStream",require("./Writa...
  method ProxyHandler (line 3173) | get ProxyHandler(){return defineProp("ProxyHandler",require("./ProxyHand...
  method DomUtils (line 3173) | get DomUtils(){return defineProp("DomUtils",require("domutils"))}
  method CollectingHandler (line 3173) | get CollectingHandler(){return defineProp("CollectingHandler",require("....
  method RssHandler (line 3173) | get RssHandler(){return defineProp("RssHandler",this.FeedHandler)}
  function isBuffer (line 3173) | function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.i...
  function isSlowBuffer (line 3173) | function isSlowBuffer(obj){return typeof obj.readFloatLE==="function"&&t...
  function nextTick (line 3173) | function nextTick(fn,arg1,arg2,arg3){if(typeof fn!=="function"){throw ne...
  function defaultSetTimout (line 3173) | function defaultSetTimout(){throw new Error("setTimeout has not been def...
  function defaultClearTimeout (line 3173) | function defaultClearTimeout(){throw new Error("clearTimeout has not bee...
  function runTimeout (line 3173) | function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTim...
  function runClearTimeout (line 3173) | function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){r...
  function cleanUpNextTick (line 3173) | function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=...
  function drainQueue (line 3173) | function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUp...
  function Item (line 3173) | function Item(fun,array){this.fun=fun;this.array=array}
  function noop (line 3173) | function noop(){}
  function Duplex (line 3173) | function Duplex(options){if(!(this instanceof Duplex))return new Duplex(...
  function onend (line 3173) | function onend(){if(this.allowHalfOpen||this._writableState.ended)return...
  function onEndNT (line 3173) | function onEndNT(self){self.end()}
  function forEach (line 3173) | function forEach(xs,f){for(var i=0,l=xs.length;i<l;i++){f(xs[i],i)}}
  function PassThrough (line 3173) | function PassThrough(options){if(!(this instanceof PassThrough))return n...
  function prependListener (line 3173) | function prependListener(emitter,event,fn){if(typeof emitter.prependList...
  function ReadableState (line 3173) | function ReadableState(options,stream){Duplex=Duplex||require("./_stream...
  function Readable (line 3173) | function Readable(options){Duplex=Duplex||require("./_stream_duplex");if...
  function readableAddChunk (line 3173) | function readableAddChunk(stream,state,chunk,encoding,addToFront){var er...
  function needMoreData (line 3173) | function needMoreData(state){return!state.ended&&(state.needReadable||st...
  function computeNewHighWaterMark (line 3173) | function computeNewHighWaterMark(n){if(n>=MAX_HWM){n=MAX_HWM}else{n--;n|...
  function howMuchToRead (line 3173) | function howMuchToRead(n,state){if(n<=0||state.length===0&&state.ended)r...
  function chunkInvalid (line 3173) | function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk...
  function onEofChunk (line 3173) | function onEofChunk(stream,state){if(state.ended)return;if(state.decoder...
  function emitReadable (line 3173) | function emitReadable(stream){var state=stream._readableState;state.need...
  function emitReadable_ (line 3173) | function emitReadable_(stream){debug("emit readable");stream.emit("reada...
  function maybeReadMore (line 3173) | function maybeReadMore(stream,state){if(!state.readingMore){state.readin...
  function maybeReadMore_ (line 3173) | function maybeReadMore_(stream,state){var len=state.length;while(!state....
  function onunpipe (line 3173) | function onunpipe(readable){debug("onunpipe");if(readable===src){cleanup...
  function onend (line 3173) | function onend(){debug("onend");dest.end()}
  function cleanup (line 3173) | function cleanup(){debug("cleanup");dest.removeListener("close",onclose)...
  function ondata (line 3173) | function ondata(chunk){debug("ondata");increasedAwaitDrain=false;var ret...
  function onerror (line 3173) | function onerror(er){debug("onerror",er);unpipe();dest.removeListener("e...
  function onclose (line 3173) | function onclose(){dest.removeListener("finish",onfinish);unpipe()}
  function onfinish (line 3173) | function onfinish(){debug("onfinish");dest.removeListener("close",onclos...
  function unpipe (line 3173) | function unpipe(){debug("unpipe");src.unpipe(dest)}
  function pipeOnDrain (line 3173) | function pipeOnDrain(src){return function(){var state=src._readableState...
  function nReadingNextTick (line 3173) | function nReadingNextTick(self){debug("readable nexttick read 0");self.r...
  function resume (line 3173) | function resume(stream,state){if(!state.resumeScheduled){state.resumeSch...
  function resume_ (line 3173) | function resume_(stream,state){if(!state.reading){debug("resume read 0")...
  function flow (line 3173) | function flow(stream){var state=stream._readableState;debug("flow",state...
  function fromList (line 3173) | function fromList(n,state){if(state.length===0)return null;var ret;if(st...
  function fromListPartial (line 3173) | function fromListPartial(n,list,hasStrings){var ret;if(n<list.head.data....
  function copyFromBufferString (line 3173) | function copyFromBufferString(n,list){var p=list.head;var c=1;var ret=p....
  function copyFromBuffer (line 3173) | function copyFromBuffer(n,list){var ret=bufferShim.allocUnsafe(n);var p=...
  function endReadable (line 3173) | function endReadable(stream){var state=stream._readableState;if(state.le...
  function endReadableNT (line 3173) | function endReadableNT(state,stream){if(!state.endEmitted&&state.length=...
  function forEach (line 3173) | function forEach(xs,f){for(var i=0,l=xs.length;i<l;i++){f(xs[i],i)}}
  function indexOf (line 3173) | function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)ret...
  function TransformState (line 3173) | function TransformState(stream){this.afterTransform=function(er,data){re...
  function afterTransform (line 3173) | function afterTransform(stream,er,data){var ts=stream._transformState;ts...
  function Transform (line 3173) | function Transform(options){if(!(this instanceof Transform))return new T...
  function done (line 3173) | function done(stream,er){if(er)return stream.emit("error",er);var ws=str...
  function nop (line 3173) | function nop(){}
  function WriteReq (line 3173) | function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=enco...
  function WritableState (line 3173) | function WritableState(options,stream){Duplex=Duplex||require("./_stream...
  function Writable (line 3173) | function Writable(options){Duplex=Duplex||require("./_stream_duplex");if...
  function writeAfterEnd (line 3173) | function writeAfterEnd(stream,cb){var er=new Error("write after end");st...
  function validChunk (line 3173) | function validChunk(stream,state,chunk,cb){var valid=true;var er=false;i...
  function decodeChunk (line 3174) | function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.d...
  function writeOrBuffer (line 3174) | function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk...
  function doWrite (line 3174) | function doWrite(stream,state,writev,len,chunk,encoding,cb){state.writel...
  function onwriteError (line 3174) | function onwriteError(stream,state,sync,er,cb){--state.pendingcb;if(sync...
  function onwriteStateUpdate (line 3174) | function onwriteStateUpdate(state){state.writing=false;state.writecb=nul...
  function onwrite (line 3174) | function onwrite(stream,er){var state=stream._writableState;var sync=sta...
  function afterWrite (line 3174) | function afterWrite(stream,state,finished,cb){if(!finished)onwriteDrain(...
  function onwriteDrain (line 3174) | function onwriteDrain(stream,state){if(state.length===0&&state.needDrain...
  function clearBuffer (line 3174) | function clearBuffer(stream,state){state.bufferProcessing=true;var entry...
  function needFinish (line 3174) | function needFinish(state){return state.ending&&state.length===0&&state....
  function prefinish (line 3174) | function prefinish(stream,state){if(!state.prefinished){state.prefinishe...
  function finishMaybe (line 3174) | function finishMaybe(stream,state){var need=needFinish(state);if(need){i...
  function endWritable (line 3174) | function endWritable(stream,state,cb){state.ending=true;finishMaybe(stre...
  function CorkedRequest (line 3174) | function CorkedRequest(state){var _this=this;this.next=null;this.entry=n...
  function BufferList (line 3174) | function BufferList(){this.head=null;this.tail=null;this.length=0}
  function Stream (line 3174) | function Stream(){EE.call(this)}
  function ondata (line 3174) | function ondata(chunk){if(dest.writable){if(false===dest.write(chunk)&&s...
  function ondrain (line 3174) | function ondrain(){if(source.readable&&source.resume){source.resume()}}
  function onend (line 3174) | function onend(){if(didOnEnd)return;didOnEnd=true;dest.end()}
  function onclose (line 3174) | function onclose(){if(didOnEnd)return;didOnEnd=true;if(typeof dest.destr...
  function onerror (line 3174) | function onerror(er){cleanup();if(EE.listenerCount(this,"error")===0){th...
  function cleanup (line 3174) | function cleanup(){source.removeListener("data",ondata);dest.removeListe...
  function assertEncoding (line 3174) | function assertEncoding(encoding){if(encoding&&!isBufferEncoding(encodin...
  function passThroughWrite (line 3174) | function passThroughWrite(buffer){return buffer.toString(this.encoding)}
  function utf16DetectIncompleteChar (line 3174) | function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.leng...
  function base64DetectIncompleteChar (line 3174) | function base64DetectIncompleteChar(buffer){this.charReceived=buffer.len...
  function deprecate (line 3174) | function deprecate(fn,msg){if(config("noDeprecation")){return fn}var war...
  function config (line 3174) | function config(name){try{if(!global.localStorage)return false}catch(_){...
  function extend (line 3174) | function extend(){var target={};for(var i=0;i<arguments.length;i++){var ...
  function s (line 3182) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function splitUrl (line 5128) | function splitUrl(url) {
  function unsplitUrl (line 5149) | function unsplitUrl(url) {
  function joinUrl (line 5169) | function joinUrl(base, rel) {
  function addReference (line 5725) | function addReference(schema, name, skipRef) {
  function primitiveToHTML (line 5744) | function primitiveToHTML(schema) {
  function primitiveToOptionsHTML (line 5786) | function primitiveToOptionsHTML(schema, html) {
  function processModel (line 5881) | function processModel(schema, name) {
  function itemByPriority (line 7631) | function itemByPriority(col, itemPriority) {
  function drainQueue (line 7987) | function drainQueue() {
  function noop (line 8019) | function noop() {}
  function btoa (line 8045) | function btoa(str) {
  function Bar (line 8110) | function Bar () {}
  function kMaxLength (line 8124) | function kMaxLength () {
  function Buffer (line 8142) | function Buffer (arg) {
  function fromNumber (line 8166) | function fromNumber (that, length) {
  function fromString (line 8176) | function fromString (that, string, encoding) {
  function fromObject (line 8187) | function fromObject (that, object) {
  function fromBuffer (line 8210) | function fromBuffer (that, buffer) {
  function fromArray (line 8217) | function fromArray (that, array) {
  function fromTypedArray (line 8227) | function fromTypedArray (that, array) {
  function fromArrayBuffer (line 8239) | function fromArrayBuffer (that, array) {
  function fromArrayLike (line 8251) | function fromArrayLike (that, array) {
  function fromJsonObject (line 8262) | function fromJsonObject (that, object) {
  function allocate (line 8278) | function allocate (that, length) {
  function checked (line 8294) | function checked (length) {
  function SlowBuffer (line 8304) | function SlowBuffer (subject, encoding) {
  function byteLength (line 8388) | function byteLength (string, encoding) {
  function slowToString (line 8429) | function slowToString (encoding, start, end) {
  function arrayIndexOf (line 8526) | function arrayIndexOf (arr, val, byteOffset) {
  function hexWrite (line 8554) | function hexWrite (buf, string, offset, length) {
  function utf8Write (line 8581) | function utf8Write (buf, string, offset, length) {
  function asciiWrite (line 8585) | function asciiWrite (buf, string, offset, length) {
  function binaryWrite (line 8589) | function binaryWrite (buf, string, offset, length) {
  function base64Write (line 8593) | function base64Write (buf, string, offset, length) {
  function ucs2Write (line 8597) | function ucs2Write (buf, string, offset, length) {
  function base64Slice (line 8680) | function base64Slice (buf, start, end) {
  function utf8Slice (line 8688) | function utf8Slice (buf, start, end) {
  function decodeCodePointsArray (line 8766) | function decodeCodePointsArray (codePoints) {
  function asciiSlice (line 8784) | function asciiSlice (buf, start, end) {
  function binarySlice (line 8794) | function binarySlice (buf, start, end) {
  function hexSlice (line 8804) | function hexSlice (buf, start, end) {
  function utf16leSlice (line 8817) | function utf16leSlice (buf, start, end) {
  function checkOffset (line 8866) | function checkOffset (offset, ext, length) {
  function checkInt (line 9027) | function checkInt (buf, value, offset, ext, max, min) {
  function objectWriteUInt16 (line 9074) | function objectWriteUInt16 (buf, value, offset, littleEndian) {
  function objectWriteUInt32 (line 9108) | function objectWriteUInt32 (buf, value, offset, littleEndian) {
  function checkIEEE754 (line 9252) | function checkIEEE754 (buf, value, offset, ext, max, min) {
  function writeFloat (line 9258) | function writeFloat (buf, value, offset, littleEndian, noAssert) {
  function writeDouble (line 9274) | function writeDouble (buf, value, offset, littleEndian, noAssert) {
  function base64clean (line 9459) | function base64clean (str) {
  function stringtrim (line 9471) | function stringtrim (str) {
  function toHex (line 9476) | function toHex (n) {
  function utf8ToBytes (line 9481) | function utf8ToBytes (string, units) {
  function asciiToBytes (line 9561) | function asciiToBytes (str) {
  function utf16leToBytes (line 9570) | function utf16leToBytes (str, units) {
  function base64ToBytes (line 9586) | function base64ToBytes (str) {
  function blitBuffer (line 9590) | function blitBuffer (src, dst, offset, length) {
  function decode (line 9616) | function decode (elt) {
  function b64ToByteArray (line 9634) | function b64ToByteArray (b64) {
  function uint8ToBase64 (line 9680) | function uint8ToBase64 (uint8) {
  function CookieAccessInfo (line 9850) | function CookieAccessInfo(domain, path, secure, script) {
  function Cookie (line 9862) | function Cookie(cookiestr, request_domain, request_path) {
  function CookieJar (line 10002) | function CookieJar() {
  function deprecated (line 10125) | function deprecated(name) {
  function isNothing (line 10162) | function isNothing(subject) {
  function isObject (line 10167) | function isObject(subject) {
  function toArray (line 10172) | function toArray(sequence) {
  function extend (line 10180) | function extend(target, source) {
  function repeat (line 10196) | function repeat(string, count) {
  function isNegativeZero (line 10207) | function isNegativeZero(number) {
  function compileStyleMap (line 10278) | function compileStyleMap(schema, map) {
  function encodeHex (line 10306) | function encodeHex(character) {
  function State (line 10327) | function State(options) {
  function indentString (line 10349) | function indentString(string, spaces) {
  function generateNextLine (line 10375) | function generateNextLine(state, level) {
  function testImplicitResolving (line 10379) | function testImplicitResolving(state, str) {
  function isWhitespace (line 10394) | function isWhitespace(c) {
  function isPrintable (line 10402) | function isPrintable(c) {
  function isPlainSafe (line 10410) | function isPlainSafe(c) {
  function isPlainSafeFirst (line 10426) | function isPlainSafeFirst(c) {
  function chooseScalarStyle (line 10469) | function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineW...
  function writeScalar (line 10537) | function writeScalar(state, string, level, iskey) {
  function blockHeader (line 10586) | function blockHeader(string, indentPerLevel) {
  function dropEndingNewline (line 10598) | function dropEndingNewline(string) {
  function foldString (line 10604) | function foldString(string, width) {
  function foldLine (line 10641) | function foldLine(line, width) {
  function escapeString (line 10681) | function escapeString(string) {
  function writeFlowSequence (line 10697) | function writeFlowSequence(state, level, object) {
  function writeBlockSequence (line 10715) | function writeBlockSequence(state, level, object, compact) {
  function writeFlowMapping (line 10735) | function writeFlowMapping(state, level, object) {
  function writeBlockMapping (line 10775) | function writeBlockMapping(state, level, object, compact) {
  function detectType (line 10849) | function detectType(state, object, explicit) {
  function writeNode (line 10887) | function writeNode(state, level, object, block, compact, iskey) {
  function getDuplicateReferences (line 10961) | function getDuplicateReferences(object, state) {
  function inspectNode (line 10975) | function inspectNode(object, objects, duplicatesIndexes) {
  function dump (line 11004) | function dump(input, options) {
  function safeDump (line 11016) | function safeDump(input, options) {
  function YAMLException (line 11028) | function YAMLException(reason, mark) {
  function is_EOL (line 11101) | function is_EOL(c) {
  function is_WHITE_SPACE (line 11105) | function is_WHITE_SPACE(c) {
  function is_WS_OR_EOL (line 11109) | function is_WS_OR_EOL(c) {
  function is_FLOW_INDICATOR (line 11116) | function is_FLOW_INDICATOR(c) {
  function fromHexCode (line 11124) | function fromHexCode(c) {
  function escapedHexLen (line 11141) | function escapedHexLen(c) {
  function fromDecimalCode (line 11148) | function fromDecimalCode(c) {
  function simpleEscapeSequence (line 11156) | function simpleEscapeSequence(c) {
  function charFromCodepoint (line 11177) | function charFromCodepoint(c) {
  function State (line 11195) | function State(input, options) {
  function generateError (line 11229) | function generateError(state, message) {
  function throwError (line 11235) | function throwError(state, message) {
  function throwWarning (line 11239) | function throwWarning(state, message) {
  function captureSegment (line 11309) | function captureSegment(state, start, end, checkJson) {
  function mergeMappings (line 11333) | function mergeMappings(state, destination, source, overridableKeys) {
  function storeMappingPair (line 11352) | function storeMappingPair(state, _result, overridableKeys, keyTag, keyNo...
  function readLineBreak (line 11382) | function readLineBreak(state) {
  function skipSeparationSpace (line 11402) | function skipSeparationSpace(state, allowComments, checkIndent) {
  function testDocumentSeparator (line 11440) | function testDocumentSeparator(state) {
  function writeFoldedLines (line 11464) | function writeFoldedLines(state, count) {
  function readPlainScalar (line 11473) | function readPlainScalar(state, nodeIndent, withinFlowCollection) {
  function readSingleQuotedScalar (line 11582) | function readSingleQuotedScalar(state, nodeIndent) {
  function readDoubleQuotedScalar (line 11626) | function readDoubleQuotedScalar(state, nodeIndent) {
  function readFlowCollection (line 11705) | function readFlowCollection(state, nodeIndent) {
  function readBlockScalar (line 11810) | function readBlockScalar(state, nodeIndent) {
  function readBlockSequence (line 11953) | function readBlockSequence(state, nodeIndent) {
  function readBlockMapping (line 12015) | function readBlockMapping(state, nodeIndent, flowIndent) {
  function readTagProperty (line 12168) | function readTagProperty(state) {
  function readAnchorProperty (line 12262) | function readAnchorProperty(state) {
  function readAlias (line 12289) | function readAlias(state) {
  function composeNode (line 12319) | function composeNode(state, parentIndent, nodeContext, allowToSeek, allo...
  function readDocument (line 12475) | function readDocument(state) {
  function loadDocuments (line 12583) | function loadDocuments(input, options) {
  function loadAll (line 12619) | function loadAll(input, iterator, options) {
  function load (line 12628) | function load(input, options) {
  function safeLoadAll (line 12641) | function safeLoadAll(input, output, options) {
  function safeLoad (line 12646) | function safeLoad(input, options) {
  function Mark (line 12663) | function Mark(name, buffer, position, line, column) {
  function compileList (line 12744) | function compileList(schema, name, result) {
  function compileMap (line 12767) | function compileMap(/* lists... */) {
  function Schema (line 12782) | function Schema(definition) {
  function compileStyleAliases (line 12985) | function compileStyleAliases(map) {
  function Type (line 12999) | function Type(tag, options) {
  function resolveYamlBinary (line 13046) | function resolveYamlBinary(data) {
  function constructYamlBinary (line 13068) | function constructYamlBinary(data) {
  function representYamlBinary (line 13109) | function representYamlBinary(object /*, style*/) {
  function isBinary (line 13151) | function isBinary(object) {
  function resolveYamlBoolean (line 13168) | function resolveYamlBoolean(data) {
  function constructYamlBoolean (line 13177) | function constructYamlBoolean(data) {
  function isBoolean (line 13183) | function isBoolean(object) {
  function resolveYamlFloat (line 13213) | function resolveYamlFloat(data) {
  function constructYamlFloat (line 13221) | function constructYamlFloat(data) {
  function representYamlFloat (line 13260) | function representYamlFloat(object, style) {
  function isFloat (line 13293) | function isFloat(object) {
  function isHexCode (line 13313) | function isHexCode(c) {
  function isOctCode (line 13319) | function isOctCode(c) {
  function isDecCode (line 13323) | function isDecCode(c) {
  function resolveYamlInteger (line 13327) | function resolveYamlInteger(data) {
  function constructYamlInteger (line 13409) | function constructYamlInteger(data) {
  function isInteger (line 13452) | function isInteger(object) {
  function resolveJavascriptFunction (line 13500) | function resolveJavascriptFunction(data) {
  function constructJavascriptFunction (line 13520) | function constructJavascriptFunction(data) {
  function representJavascriptFunction (line 13547) | function representJavascriptFunction(object /*, style*/) {
  function isFunction (line 13551) | function isFunction(object) {
  function resolveJavascriptRegExp (line 13568) | function resolveJavascriptRegExp(data) {
  function constructJavascriptRegExp (line 13589) | function constructJavascriptRegExp(data) {
  function representJavascriptRegExp (line 13603) | function representJavascriptRegExp(object /*, style*/) {
  function isRegExp (line 13613) | function isRegExp(object) {
  function resolveJavascriptUndefined (line 13630) | function resolveJavascriptUndefined() {
  function constructJavascriptUndefined (line 13634) | function constructJavascriptUndefined() {
  function representJavascriptUndefined (line 13639) | function representJavascriptUndefined() {
  function isUndefined (line 13643) | function isUndefined(object) {
  function resolveYamlMerge (line 13670) | function resolveYamlMerge(data) {
  function resolveYamlNull (line 13684) | function resolveYamlNull(data) {
  function constructYamlNull (line 13693) | function constructYamlNull() {
  function isNull (line 13697) | function isNull(object) {
  function resolveYamlOmap (line 13723) | function resolveYamlOmap(data) {
  function constructYamlOmap (line 13751) | function constructYamlOmap(data) {
  function resolveYamlPairs (line 13768) | function resolveYamlPairs(data) {
  function constructYamlPairs (line 13791) | function constructYamlPairs(data) {
  function resolveYamlSet (line 13833) | function resolveYamlSet(data) {
  function constructYamlSet (line 13847) | function constructYamlSet(data) {
  function resolveYamlTimestamp (line 13889) | function resolveYamlTimestamp(data) {
  function constructYamlTimestamp (line 13896) | function constructYamlTimestamp(data) {
  function representYamlTimestamp (line 13945) | function representYamlTimestamp(object /*, style*/) {
  function indexOf (line 13992) | function indexOf(array, value, fromIndex) {
  function last (line 14026) | function last(array) {
  function lodash (line 14143) | function lodash(value) {
  function includes (line 14301) | function includes(collection, target, fromIndex, guard) {
  function map (line 14381) | function map(collection, iteratee, thisArg) {
  function restParam (line 14502) | function restParam(func, start) {
  function LazyWrapper (line 14546) | function LazyWrapper(value) {
  function LodashWrapper (line 14573) | function LodashWrapper(value, chainAll, actions) {
  function arrayCopy (line 14593) | function arrayCopy(source, array) {
  function arrayEach (line 14616) | function arrayEach(array, iteratee) {
  function arrayMap (line 14640) | function arrayMap(array, iteratee) {
  function arraySome (line 14664) | function arraySome(array, predicate) {
  function baseAssign (line 14691) | function baseAssign(object, source) {
  function baseCallback (line 14716) | function baseCallback(func, thisArg, argCount) {
  function baseClone (line 14812) | function baseClone(value, isDeep, customizer, key, object, stackA, stack...
  function baseCopy (line 14880) | function baseCopy(source, props, object) {
  function object (line 14907) | function object() {}
  function baseFind (line 14951) | function baseFind(collection, predicate, eachFunc, retKey) {
  function baseFindIndex (line 14975) | function baseFindIndex(array, predicate, fromRight) {
  function baseForIn (line 15021) | function baseForIn(object, iteratee) {
  function baseForOwn (line 15040) | function baseForOwn(object, iteratee) {
  function baseGet (line 15059) | function baseGet(object, path, pathKey) {
  function baseIndexOf (line 15090) | function baseIndexOf(array, value, fromIndex) {
  function baseIsEqual (line 15125) | function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
  function baseIsEqualDeep (line 15177) | function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, ...
  function baseIsMatch (line 15256) | function baseIsMatch(object, matchData, customizer) {
  function baseLodash (line 15302) | function baseLodash() {
  function baseMap (line 15321) | function baseMap(collection, iteratee) {
  function baseMatches (line 15345) | function baseMatches(source) {
  function baseMatchesProperty (line 15385) | function baseMatchesProperty(path, srcValue) {
  function baseProperty (line 15423) | function baseProperty(key) {
  function basePropertyDeep (line 15442) | function basePropertyDeep(path) {
  function baseSlice (line 15481) | function baseSlice(array, start, end) {
  function baseToString (line 15514) | function baseToString(value) {
  function baseValues (line 15531) | function baseValues(object, props) {
  function binaryIndex (line 15563) | function binaryIndex(array, value, retHighest) {
  function binaryIndexBy (line 15607) | function binaryIndexBy(array, value, iteratee, retHighest) {
  function bindCallback (line 15657) | function bindCallback(func, thisArg, argCount) {
  function bufferClone (line 15698) | function bufferClone(buffer) {
  function composeArgs (line 15724) | function composeArgs(args, partials, holders) {
  function composeArgsRight (line 15760) | function composeArgsRight(args, partials, holders) {
  function createBaseEach (line 15797) | function createBaseEach(eachFunc, fromRight) {
  function createBaseFor (line 15827) | function createBaseFor(fromRight) {
  function createBindWrapper (line 15859) | function createBindWrapper(func, thisArg) {
  function createCtorWrapper (line 15885) | function createCtorWrapper(Ctor) {
  function createFind (line 15926) | function createFind(eachFunc, fromRight) {
  function createForEach (line 15951) | function createForEach(arrayFunc, eachFunc) {
  function createHybridWrapper (line 16002) | function createHybridWrapper(func, bitmask, thisArg, partials, holders, ...
  function createPartialWrapper (line 16096) | function createPartialWrapper(func, bitmask, thisArg, partials) {
  function createWrapper (line 16171) | function createWrapper(func, bitmask, thisArg, partials, holders, argPos...
  function equalArrays (line 16230) | function equalArrays(array, other, equalFunc, customizer, isLoose, stack...
  function equalByTag (line 16288) | function equalByTag(object, other, tag) {
  function equalObjects (line 16339) | function equalObjects(object, other, equalFunc, customizer, isLoose, sta...
  function getFuncName (line 16412) | function getFuncName(func) {
  function getMatchData (line 16457) | function getMatchData(object) {
  function getNative (line 16480) | function getNative(object, key) {
  function indexOfNaN (line 16497) | function indexOfNaN(array, fromIndex, fromRight) {
  function initCloneArray (line 16526) | function initCloneArray(array) {
  function initCloneByTag (line 16592) | function initCloneByTag(object, tag, isDeep) {
  function initCloneObject (line 16635) | function initCloneObject(object) {
  function isArrayLike (line 16656) | function isArrayLike(value) {
  function isIndex (line 16703) | function isIndex(value, length) {
  function isIterateeCall (line 16725) | function isIterateeCall(value, index, object) {
  function isKey (line 16757) | function isKey(value, object) {
  function isLaziable (line 16784) | function isLaziable(func) {
  function isLength (line 16816) | function isLength(value) {
  function isObjectLike (line 16830) | function isObjectLike(value) {
  function isStrictComparable (line 16847) | function isStrictComparable(value) {
  function mergeData (line 16887) | function mergeData(data, source) {
  function reorder (line 16981) | function reorder(array, indexes) {
  function replaceHolders (line 17008) | function replaceHolders(array, placeholder) {
  function shimKeys (line 17090) | function shimKeys(object) {
  function toObject (line 17124) | function toObject(value) {
  function toPath (line 17157) | function toPath(value) {
  function wrapperClone (line 17182) | function wrapperClone(wrapper) {
  function cloneDeep (line 17239) | function cloneDeep(value, customizer, thisArg) {
  function isArguments (line 17276) | function isArguments(value) {
  function isEmpty (line 17361) | function isEmpty(value) {
  function isFunction (line 17405) | function isFunction(value) {
  function isNative (line 17453) | function isNative(value) {
  function isObject (line 17486) | function isObject(value) {
  function isPlainObject (line 17547) | function isPlainObject(value) {
  function isString (line 17608) | function isString(value) {
  function isTypedArray (line 17684) | function isTypedArray(value) {
  function isUndefined (line 17707) | function isUndefined(value) {
  function keysIn (line 17841) | function keysIn(object) {
  function pairs (line 17917) | function pairs(object) {
  function values (line 17963) | function values(object) {
  function identity (line 18083) | function identity(value) {
  function noop (line 18104) | function noop() {
  function property (line 18137) | function property(path) {
  function flush (line 18255) | function flush() {
  function runSingle (line 18279) | function runSingle(task, domain) {
  function uncurryThis (line 18405) | function uncurryThis(f) {
  function Type (line 18469) | function Type() { }
  function isObject (line 18488) | function isObject(value) {
  function isStopIteration (line 18495) | function isStopIteration(exception) {
  function makeStackTraceLong (line 18517) | function makeStackTraceLong(error, promise) {
  function filterStackString (line 18540) | function filterStackString(stackString) {
  function isNodeFrame (line 18553) | function isNodeFrame(stackLine) {
  function getFileNameAndLineNumber (line 18558) | function getFileNameAndLineNumber(stackLine) {
  function isInternalFrame (line 18579) | function isInternalFrame(stackLine) {
  function captureLine (line 18596) | function captureLine() {
  function deprecate (line 18616) | function deprecate(callback, name, alternative) {
  function Q (line 18635) | function Q(value) {
  function defer (line 18679) | function defer() {
  function promise (line 18820) | function promise(resolver) {
  function race (line 18883) | function race(answerPs) {
  function Promise (line 18912) | function Promise(descriptor, fallback, inspect) {
  function _fulfilled (line 18976) | function _fulfilled(value) {
  function _rejected (line 18984) | function _rejected(exception) {
  function _progressed (line 18996) | function _progressed(value) {
  function when (line 19082) | function when(value, fulfilled, rejected, progressed) {
  function nearer (line 19114) | function nearer(value) {
  function isPromise (line 19129) | function isPromise(object) {
  function isPromiseAlike (line 19134) | function isPromiseAlike(object) {
  function isPending (line 19143) | function isPending(object) {
  function isFulfilled (line 19156) | function isFulfilled(object) {
  function isRejected (line 19168) | function isRejected(object) {
  function resetUnhandledRejections (line 19187) | function resetUnhandledRejections() {
  function trackRejection (line 19196) | function trackRejection(promise, reason) {
  function untrackRejection (line 19217) | function untrackRejection(promise) {
  function reject (line 19259) | function reject(reason) {
  function fulfill (line 19285) | function fulfill(value) {
  function coerce (line 19324) | function coerce(promise) {
  function master (line 19346) | function master(object) {
  function spread (line 19367) | function spread(value, fulfilled, rejected) {
  function async (line 19404) | function async(makeGenerator) {
  function spawn (line 19461) | function spawn(makeGenerator) {
  function _return (line 19491) | function _return(value) {
  function promised (line 19511) | function promised(callback) {
  function dispatch (line 19527) | function dispatch(object, op, args) {
  function all (line 19705) | function all(promises) {
  function any (line 19753) | function any(promises) {
  function allResolved (line 19803) | function allResolved(promises) {
  function allSettled (line 19822) | function allSettled(promises) {
  function regardless (line 19837) | function regardless() {
  function progress (line 19873) | function progress(object, progressed) {
  function bound (line 20085) | function bound() {
  function nodeify (line 20163) | function nodeify(object, nodeback) {
  function noop (line 20219) | function noop(){}
  function serialize (line 20265) | function serialize(obj) {
  function pushEncodedKeyValuePair (line 20283) | function pushEncodedKeyValuePair(pairs, key, val) {
  function parseString (line 20316) | function parseString(str) {
  function parseHeader (line 20395) | function parseHeader(str) {
  function isJSON (line 20424) | function isJSON(mime) {
  function type (line 20436) | function type(str){
  function params (line 20448) | function params(str){
  function Response (line 20505) | function Response(req, options) {
  function Request (line 20668) | function Request(method, url) {
  function del (line 21111) | function del(url, fn){
  function isObject (line 21183) | function isObject(obj) {
  function request (line 21556) | function request(RequestConstructor, method, url) {
  function Emitter (line 21588) | function Emitter(obj) {
  function mixin (line 21600) | function mixin(obj) {
  function on (line 21635) | function on() {
  function warn (line 22020) | function warn(message) {
  function getTokenName (line 22531) | function getTokenName(dets) {
  function addReference (line 24347) | function addReference(schema, name, skipRef) {
  function primitiveToHTML (line 24366) | function primitiveToHTML(schema) {
  function primitiveToOptionsHTML (line 24408) | function primitiveToOptionsHTML(schema, html) {
  function processModel (line 24511) | function processModel(schema, name) {
  function createObjectXML (line 24987) | function createObjectXML (descriptor) {
  function getInfiniteLoopMessage (line 25033) | function getInfiniteLoopMessage (name, loopTo) {
  function getErrorMessage (line 25037) | function getErrorMessage (details) {
  function createSchemaXML (line 25042) | function createSchemaXML (name, definition, models, config) {
  function Descriptor (line 25076) | function Descriptor (name, type, definition, models, config) {
  function getDescriptorByRef (line 25089) | function getDescriptorByRef($ref, name, models, config) {
  function getDescriptor (line 25115) | function getDescriptor (name, definition, models, config){
  function createXMLSample (line 25128) | function createXMLSample (name, definition, models, isParam) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/config/AlipayConfig.java
  class AlipayConfig (line 10) | public class AlipayConfig {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/config/SwaggerConfiguration.java
  class SwaggerConfiguration (line 24) | @Configuration  // 让 Spring 来加载该配置类
    method createRestApi (line 32) | @Bean
    method apiInfo (line 46) | private ApiInfo apiInfo() {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/config/ThymeleafConfig.java
  class ThymeleafConfig (line 22) | @Configuration
    method setApplicationContext (line 27) | @Override
    method viewResolver (line 32) | @Bean
    method templateEngine (line 40) | @Bean
    method templateResolver (line 48) | private ITemplateResolver templateResolver() {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/utils/EmailUtil.java
  class EmailUtil (line 25) | @Component
    method sendTemplateEmail (line 48) | @Async
    method checkEmail (line 101) | public static boolean checkEmail(String email) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/utils/IPInfoUtil.java
  class IPInfoUtil (line 14) | public class IPInfoUtil {
    method getIpAddr (line 22) | public static String getIpAddr(HttpServletRequest request) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/utils/ObjectUtil.java
  class ObjectUtil (line 15) | public class ObjectUtil {
    method beanToMap (line 22) | public static <T> Map<String, Object> beanToMap(T bean) {
    method mapToStringAll (line 33) | public static String mapToStringAll(Map<String, String[]> paramMap){

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/common/utils/QiniuUtil.java
  class QiniuUtil (line 34) | public class QiniuUtil {
    method getUpToken (line 47) | public static String getUpToken() {
    method qiniuBase64Upload (line 51) | public static String qiniuBase64Upload(String data64){
    method base64Data (line 74) | public static String base64Data(String data){
    method renamePic (line 88) | public static String renamePic(String fileName){
    method isValidImage (line 93) | public static String isValidImage(HttpServletRequest request, Multipar...
    method checkExt (line 117) | public static String checkExt(String fileName,String dirName){
    method main (line 132) | public static void main(String[] args){

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/controller/CartController.java
  class CartController (line 18) | @RestController
    method addProduct (line 32) | @PostMapping("addProduct")
    method getCartList (line 45) | @GetMapping("getCartList")
    method delProduct (line 59) | @PostMapping("delProduct")
    method editProduct (line 72) | @PostMapping("editProduct")
    method editCheckAll (line 85) | @PostMapping("editCheckAll")
    method delCartChecked (line 98) | @PostMapping("delChecked")

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/controller/GoodsController.java
  class GoodsController (line 23) | @RestController
    method getQuickSearch (line 49) | @GetMapping(value = "quickSearch")
    method getCateList (line 61) | @GetMapping("cateList")
    method getProductHome (line 73) | @GetMapping("home")
    method getProductDet (line 86) | @GetMapping("productDet")
    method getRecommendGoods (line 98) | @GetMapping("recommend")
    method getCategoryProducts (line 111) | @GetMapping("getCategoryGoods")

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/controller/MemberController.java
  class MemberController (line 27) | @RestController
    method checkPhone (line 44) | @GetMapping("checkphone/{phone}")
    method sendSms (line 57) | @GetMapping("sendsms/{phone}")
    method register (line 70) | @PostMapping("register")
    method geetestInit (line 83) | @GetMapping("geetestInit")
    method login (line 102) | @PostMapping("login")
    method checkLogin (line 115) | @GetMapping("checkLogin")
    method logout (line 140) | @GetMapping("logout")
    method checkAccount (line 159) | @GetMapping("checkAccount")
    method updatePassword (line 173) | @PostMapping("updatePassword")
    method forgetVerCode (line 186) | @GetMapping("forgetVerCode")
    method getAddressList (line 199) | @GetMapping("addressList")
    method addressUpdate (line 212) | @PostMapping("addressUpdate")
    method addressAdd (line 225) | @PostMapping("addressAdd")
    method addressDel (line 238) | @PostMapping("addressDel")
    method uploadImg (line 250) | @PostMapping("uploadImg")
    method updateUsername (line 263) | @PostMapping("updateUsername")
    method updatePhone (line 276) | @PostMapping("updatePhone")
    method updatePassword (line 289) | @PostMapping("updatePass")
    method sendEmailCode (line 302) | @GetMapping("sendEmailCode")
    method checkEmail (line 315) | @GetMapping("checkEmail")
    method updateEmail (line 328) | @PostMapping("updateEmail")

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/controller/OrderController.java
  class OrderController (line 22) | @RestController
    method addOrder (line 36) | @PostMapping("addOrder")
    method getOrderDet (line 49) | @GetMapping("getOrderDet")
    method payment (line 62) | @PostMapping("payment")
    method orderCallback (line 72) | @PostMapping("callback")
    method getOrderStatus (line 105) | @GetMapping("getOrderStatus")
    method getOrderList (line 117) | @GetMapping("orderList")
    method confirmReceipt (line 132) | @PostMapping("confirmReceipt")
    method deleteOrder (line 145) | @PostMapping("deleteOrder")
    method cancelOrder (line 158) | @PostMapping("cancelOrder")

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/domain/ESItem.java
  class ESItem (line 15) | @Document(indexName = "item", type = "itemList", shards = 1, replicas = 0)
    method getId (line 71) | public Long getId() {
    method setId (line 75) | public void setId(Long id) {
    method getProductName (line 79) | public String getProductName() {
    method setProductName (line 83) | public void setProductName(String productName) {
    method getSubTitle (line 87) | public String getSubTitle() {
    method setSubTitle (line 91) | public void setSubTitle(String subTitle) {
    method getProductId (line 95) | public Long getProductId() {
    method setProductId (line 99) | public void setProductId(Long productId) {
    method getCid (line 103) | public Long getCid() {
    method setCid (line 107) | public void setCid(Long cid) {
    method getSalePrice (line 111) | public Double getSalePrice() {
    method setSalePrice (line 115) | public void setSalePrice(Double salePrice) {
    method getPicUrl (line 119) | public String getPicUrl() {
    method setPicUrl (line 123) | public void setPicUrl(String picUrl) {
    method getOrderNum (line 127) | public Integer getOrderNum() {
    method setOrderNum (line 131) | public void setOrderNum(Integer orderNum) {
    method getLimit (line 135) | public Integer getLimit() {
    method setLimit (line 139) | public void setLimit(Integer limit) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/Cart.java
  class Cart (line 12) | public class Cart implements Serializable {
    method getUserId (line 34) | public Long getUserId() {
    method setUserId (line 38) | public void setUserId(Long userId) {
    method getProductId (line 42) | public Long getProductId() {
    method setProductId (line 46) | public void setProductId(Long productId) {
    method getChecked (line 50) | public String getChecked() {
    method setChecked (line 54) | public void setChecked(String checked) {
    method getProductNum (line 58) | public int getProductNum() {
    method setProductNum (line 62) | public void setProductNum(int productNum) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/CartProduct.java
  class CartProduct (line 13) | public class CartProduct implements Serializable {
    method getProductId (line 50) | public Long getProductId() {
    method setProductId (line 54) | public void setProductId(Long productId) {
    method getSalePrice (line 58) | public BigDecimal getSalePrice() {
    method setSalePrice (line 62) | public void setSalePrice(BigDecimal salePrice) {
    method getProductNum (line 66) | public int getProductNum() {
    method setProductNum (line 70) | public void setProductNum(int productNum) {
    method getLimitNum (line 74) | public int getLimitNum() {
    method setLimitNum (line 78) | public void setLimitNum(int limitNum) {
    method getChecked (line 82) | public String getChecked() {
    method setChecked (line 86) | public void setChecked(String checked) {
    method getProductName (line 90) | public String getProductName() {
    method setProductName (line 94) | public void setProductName(String productName) {
    method getProductImg (line 98) | public String getProductImg() {
    method setProductImg (line 102) | public void setProductImg(String productImg) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/CateProductsResult.java
  class CateProductsResult (line 14) | public class CateProductsResult {
    method getTotal (line 26) | public long getTotal() {
    method setTotal (line 30) | public void setTotal(long total) {
    method getData (line 34) | public List<ESItem> getData() {
    method setData (line 38) | public void setData(List<ESItem> data) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/CategoryProductPageInfo.java
  class CategoryProductPageInfo (line 12) | public class CategoryProductPageInfo implements Serializable {
    method getPage (line 49) | public Integer getPage() {
    method setPage (line 53) | public void setPage(Integer page) {
    method getSize (line 57) | public Integer getSize() {
    method setSize (line 61) | public void setSize(Integer size) {
    method getSort (line 65) | public String getSort() {
    method setSort (line 69) | public void setSort(String sort) {
    method getKey (line 73) | public String getKey() {
    method setKey (line 77) | public void setKey(String key) {
    method getCid (line 81) | public Long getCid() {
    method setCid (line 85) | public void setCid(Long cid) {
    method getPriceGt (line 89) | public Integer getPriceGt() {
    method setPriceGt (line 93) | public void setPriceGt(Integer priceGt) {
    method getPriceLte (line 97) | public Integer getPriceLte() {
    method setPriceLte (line 101) | public void setPriceLte(Integer priceLte) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/EmailCode.java
  class EmailCode (line 10) | public class EmailCode {
    method EmailCode (line 22) | public EmailCode(String code) {
    method EmailCode (line 26) | public EmailCode(String email, String code) {
    method getEmail (line 31) | public String getEmail() {
    method setEmail (line 35) | public void setEmail(String email) {
    method getCode (line 39) | public String getCode() {
    method setCode (line 43) | public void setCode(String code) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/Member.java
  class Member (line 12) | public class Member implements Serializable {
    method getUserId (line 49) | public Long getUserId() {
    method setUserId (line 53) | public void setUserId(Long userId) {
    method getToken (line 57) | public String getToken() {
    method setToken (line 61) | public void setToken(String token) {
    method getImgData (line 65) | public String getImgData() {
    method setImgData (line 69) | public void setImgData(String imgData) {
    method getUsername (line 73) | public String getUsername() {
    method setUsername (line 77) | public void setUsername(String username) {
    method getPhone (line 81) | public String getPhone() {
    method setPhone (line 85) | public void setPhone(String phone) {
    method getPassword (line 89) | public String getPassword() {
    method setPassword (line 93) | public void setPassword(String password) {
    method getEmail (line 97) | public String getEmail() {
    method setEmail (line 101) | public void setEmail(String email) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/MemberLogin.java
  class MemberLogin (line 12) | public class MemberLogin implements Serializable {
    method getAccount (line 29) | public String getAccount() {
    method setAccount (line 33) | public void setAccount(String account) {
    method getPassword (line 37) | public String getPassword() {
    method setPassword (line 41) | public void setPassword(String password) {
    method getAuto (line 45) | public Boolean getAuto() {
    method setAuto (line 49) | public void setAuto(Boolean auto) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/Order.java
  class Order (line 16) | public class Order implements Serializable {
    method getOrderId (line 88) | public String getOrderId() {
    method setOrderId (line 92) | public void setOrderId(String orderId) {
    method getUserId (line 96) | public String getUserId() {
    method setUserId (line 100) | public void setUserId(String userId) {
    method getOrderTotal (line 104) | public BigDecimal getOrderTotal() {
    method setOrderTotal (line 108) | public void setOrderTotal(BigDecimal orderTotal) {
    method getTbAddress (line 112) | public TbAddress getTbAddress() {
    method setTbAddress (line 116) | public void setTbAddress(TbAddress tbAddress) {
    method getGoodsList (line 120) | public List<CartProduct> getGoodsList() {
    method setGoodsList (line 124) | public void setGoodsList(List<CartProduct> goodsList) {
    method getOrderStatus (line 128) | public Integer getOrderStatus() {
    method setOrderStatus (line 132) | public void setOrderStatus(Integer orderStatus) {
    method getCreateDate (line 136) | public String getCreateDate() {
    method setCreateDate (line 140) | public void setCreateDate(String createDate) {
    method getConsignDate (line 144) | public String getConsignDate() {
    method setConsignDate (line 148) | public void setConsignDate(String consignDate) {
    method getCloseDate (line 152) | public String getCloseDate() {
    method setCloseDate (line 156) | public void setCloseDate(String closeDate) {
    method getFinishDate (line 160) | public String getFinishDate() {
    method setFinishDate (line 164) | public void setFinishDate(String finishDate) {
    method getPayDate (line 168) | public String getPayDate() {
    method setPayDate (line 172) | public void setPayDate(String payDate) {
    method getCountTime (line 176) | public String getCountTime() {
    method setCountTime (line 180) | public void setCountTime(String countTime) {
    method getShippingName (line 184) | public String getShippingName() {
    method setShippingName (line 188) | public void setShippingName(String shippingName) {
    method getShippingCode (line 192) | public String getShippingCode() {
    method setShippingCode (line 196) | public void setShippingCode(String shippingCode) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/OrderInfo.java
  class OrderInfo (line 14) | public class OrderInfo implements Serializable {
    method getUserId (line 51) | public Long getUserId() {
    method setUserId (line 55) | public void setUserId(Long userId) {
    method getAddressId (line 59) | public Long getAddressId() {
    method setAddressId (line 63) | public void setAddressId(Long addressId) {
    method getTel (line 67) | public String getTel() {
    method setTel (line 71) | public void setTel(String tel) {
    method getUserName (line 75) | public String getUserName() {
    method setUserName (line 79) | public void setUserName(String userName) {
    method getStreetName (line 83) | public String getStreetName() {
    method setStreetName (line 87) | public void setStreetName(String streetName) {
    method getOrderTotal (line 91) | public BigDecimal getOrderTotal() {
    method setOrderTotal (line 95) | public void setOrderTotal(BigDecimal orderTotal) {
    method getGoodsList (line 99) | public List<CartProduct> getGoodsList() {
    method setGoodsList (line 103) | public void setGoodsList(List<CartProduct> goodsList) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/OrderPay.java
  class OrderPay (line 13) | public class OrderPay implements Serializable {
    method getOrderId (line 30) | public Long getOrderId() {
    method setOrderId (line 34) | public void setOrderId(Long orderId) {
    method getOrderTotal (line 38) | public BigDecimal getOrderTotal() {
    method setOrderTotal (line 42) | public void setOrderTotal(BigDecimal orderTotal) {
    method getOrderStatus (line 46) | public String getOrderStatus() {
    method setOrderStatus (line 50) | public void setOrderStatus(String orderStatus) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/PageOrder.java
  class PageOrder (line 13) | public class PageOrder implements Serializable {
    method getTotal (line 25) | public int getTotal() {
    method setTotal (line 29) | public void setTotal(int total) {
    method getData (line 33) | public List<Order> getData() {
    method setData (line 37) | public void setData(List<Order> data) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/ProductDet.java
  class ProductDet (line 13) | public class ProductDet implements Serializable {
    method getProductId (line 60) | public Long getProductId() {
    method setProductId (line 64) | public void setProductId(Long productId) {
    method getSalePrice (line 68) | public BigDecimal getSalePrice() {
    method setSalePrice (line 72) | public void setSalePrice(BigDecimal salePrice) {
    method getProductName (line 76) | public String getProductName() {
    method setProductName (line 80) | public void setProductName(String productName) {
    method getSubTitle (line 84) | public String getSubTitle() {
    method setSubTitle (line 88) | public void setSubTitle(String subTitle) {
    method getLimitNum (line 92) | public Integer getLimitNum() {
    method getNum (line 96) | public Integer getNum() {
    method setNum (line 100) | public void setNum(Integer num) {
    method setLimitNum (line 104) | public void setLimitNum(Integer limitNum) {
    method getDetail (line 108) | public String getDetail() {
    method setDetail (line 112) | public void setDetail(String detail) {
    method getProductImageBig (line 116) | public String getProductImageBig() {
    method setProductImageBig (line 120) | public void setProductImageBig(String productImageBig) {
    method getProductImageSmall (line 124) | public String[] getProductImageSmall() {
    method setProductImageSmall (line 128) | public void setProductImageSmall(String[] productImageSmall) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/TbCate.java
  class TbCate (line 11) | public class TbCate implements Serializable {
    method getId (line 27) | public Long getId() {
    method setId (line 31) | public void setId(Long id) {
    method getName (line 35) | public String getName() {
    method setName (line 39) | public void setName(String name) {
    method getCatesons (line 43) | public List<TbCate> getCatesons() {
    method setCatesons (line 47) | public void setCatesons(List<TbCate> catesons) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/TbPanelContentDto.java
  class TbPanelContentDto (line 13) | public class TbPanelContentDto implements Serializable {
    method getId (line 71) | public Long getId() {
    method setId (line 75) | public void setId(Long id) {
    method getType (line 79) | public Integer getType() {
    method setType (line 83) | public void setType(Integer type) {
    method getFullUrl (line 87) | public String getFullUrl() {
    method setFullUrl (line 91) | public void setFullUrl(String fullUrl) {
    method getPicUrl (line 95) | public String getPicUrl() {
    method setPicUrl (line 99) | public void setPicUrl(String picUrl) {
    method getPicUrl2 (line 103) | public String getPicUrl2() {
    method setPicUrl2 (line 107) | public void setPicUrl2(String picUrl2) {
    method getPicUrl3 (line 111) | public String getPicUrl3() {
    method setPicUrl3 (line 115) | public void setPicUrl3(String picUrl3) {
    method getProductId (line 119) | public Long getProductId() {
    method setProductId (line 123) | public void setProductId(Long productId) {
    method getSalePrice (line 127) | public BigDecimal getSalePrice() {
    method setSalePrice (line 131) | public void setSalePrice(BigDecimal salePrice) {
    method getProductName (line 135) | public String getProductName() {
    method setProductName (line 139) | public void setProductName(String productName) {
    method getSubTitle (line 143) | public String getSubTitle() {
    method setSubTitle (line 147) | public void setSubTitle(String subTitle) {
    method getLimit (line 151) | public int getLimit() {
    method setLimit (line 155) | public void setLimit(int limit) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/TbPanelDto.java
  class TbPanelDto (line 13) | public class TbPanelDto implements Serializable {
    method getId (line 35) | public Integer getId() {
    method setId (line 39) | public void setId(Integer id) {
    method getName (line 43) | public String getName() {
    method setName (line 47) | public void setName(String name) {
    method getType (line 51) | public Integer getType() {
    method setType (line 55) | public void setType(Integer type) {
    method getPanelContentDtos (line 59) | public List<TbPanelContentDto> getPanelContentDtos() {
    method setPanelContentDtos (line 63) | public void setPanelContentDtos(List<TbPanelContentDto> panelContentDt...

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/dto/UploadImg.java
  class UploadImg (line 12) | public class UploadImg implements Serializable {
    method getUserId (line 29) | public Long getUserId() {
    method setUserId (line 33) | public void setUserId(Long userId) {
    method getImgData (line 37) | public String getImgData() {
    method setImgData (line 41) | public void setImgData(String imgData) {
    method getToken (line 45) | public String getToken() {
    method setToken (line 49) | public void setToken(String token) {

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/job/OrderCloseJob.java
  class OrderCloseJob (line 26) | public class OrderCloseJob implements Job {
    method execute (line 31) | @Override

FILE: ymall-web-api/src/main/java/com/yuu/ymall/web/api/mapper/TbAddressMapper.java
  ty
Copy disabled (too large) Download .json
Condensed preview — 928 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,427K chars).
[
  {
    "path": ".gitattributes",
    "chars": 195,
    "preview": "# Windows-specific files that require CRLF:\n*.bat       eol=crlf\n*.txt        eol=crlf\n\n# Unix-specific files that requi"
  },
  {
    "path": ".gitignore",
    "chars": 258,
    "preview": "target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBe"
  },
  {
    "path": "README.md",
    "chars": 3622,
    "preview": "## YMall\n\n## 开发环境\n\n- 操作系统:Windows 10 Enterprise\n- 开发工具:Intellij IDEA\n- 数据库:MySQL 8.0.13\n- Java SDK:Oracle JDK 1.8.152\n\n#"
  },
  {
    "path": "pom.xml",
    "chars": 672,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "sql/ymall.sql",
    "chars": 35201,
    "preview": "/*\nSQLyog Ultimate v12.5.0 (64 bit)\nMySQL - 5.5.60 : Database - ymall\n**************************************************"
  },
  {
    "path": "ymall-commons/pom.xml",
    "chars": 4925,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/consts/Consts.java",
    "chars": 937,
    "preview": "package com.yuu.ymall.commons.consts;\n\n/**\n * @author by Yuu\n * @classname Consts\n * @date 2019/6/24 16:52\n */\npublic cl"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/dto/BaseResult.java",
    "chars": 2486,
    "preview": "package com.yuu.ymall.commons.dto;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * 前后端交互数据标准\n *\n * @Classname"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/execption/YmallUploadException.java",
    "chars": 418,
    "preview": "package com.yuu.ymall.commons.execption;\n\n/**\n * @Classname YMallUploadException\n * @Date 2019/5/24 20:53\n * @Created by"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetInit.java",
    "chars": 885,
    "preview": "package com.yuu.ymall.commons.geetest;\n\nimport java.io.Serializable;\n\n/**\n * @author by Yuu\n * @classname GeetInit\n * @d"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetestLib.java",
    "chars": 12984,
    "preview": "package com.yuu.ymall.commons.geetest;\n\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\nimport java.io.IOExc"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/persistence/BaseMapper.java",
    "chars": 600,
    "preview": "package com.yuu.ymall.commons.persistence;\n\n\nimport java.util.List;\n\n/**\n * 所有数据访问层的基类\n *\n * @Classname BaseMapper\n * @D"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/redis/RedisCacheManager.java",
    "chars": 5101,
    "preview": "package com.yuu.ymall.commons.redis;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springfr"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/EsUtil.java",
    "chars": 225,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport org.springframework.stereotype.Component;\n\n/**\n * ElasticSearch 客户端连接工具\n *\n"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/HttpUtil.java",
    "chars": 4035,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport org.apache.http.HttpEntity;\nimport org.apache.http.client.entity.UrlEncoded"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/IDUtil.java",
    "chars": 538,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport java.util.Random;\n\n/**\n * @Classname IDUtil\n * @Date 2019/6/5 23:46\n * @Cre"
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/MapperUtil.java",
    "chars": 7110,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport com.fasterxml.jackson.annotation.JsonInclude;\nimport com.fasterxml.jackson."
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/SendSmsUtil.java",
    "chars": 2216,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport com.aliyuncs.CommonRequest;\nimport com.aliyuncs.CommonResponse;\nimport com."
  },
  {
    "path": "ymall-commons/src/main/java/com.yuu.ymall.commons/utils/TimeUtil.java",
    "chars": 4583,
    "preview": "package com.yuu.ymall.commons.utils;\n\nimport java.sql.Timestamp;\nimport java.util.Calendar;\nimport java.util.Date;\nimpor"
  },
  {
    "path": "ymall-dependencies/pom.xml",
    "chars": 19490,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "ymall-domain/pom.xml",
    "chars": 905,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbAddress.java",
    "chars": 850,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 地址实体\n */"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbExpress.java",
    "chars": 462,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 快递实体\n */"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbItem.java",
    "chars": 1121,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\nimport org.apache.commons.lang3.StringUtils;\n\nimport java.io.Serializ"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemCat.java",
    "chars": 662,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 商品类目实体\n "
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemDesc.java",
    "chars": 404,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 商品描述实体\n "
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbMember.java",
    "chars": 849,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 会员实体\n */"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrder.java",
    "chars": 1303,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport jav"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderItem.java",
    "chars": 705,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\n\n/**\n * 订单"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderShipping.java",
    "chars": 861,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 订单物流信息实体"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanel.java",
    "chars": 738,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 板块实体\n */"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanelContent.java",
    "chars": 1057,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport jav"
  },
  {
    "path": "ymall-domain/src/main/java/com/yuu/ymall/domain/TbUser.java",
    "chars": 449,
    "preview": "package com.yuu.ymall.domain;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\n/**\n * 用户实体\n */"
  },
  {
    "path": "ymall-web-admin/.rebel.xml.bak",
    "chars": 763,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n  This is the JRebel configuration file. It maps the running application to"
  },
  {
    "path": "ymall-web-admin/pom.xml",
    "chars": 4952,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/consts/Consts.java",
    "chars": 1437,
    "preview": "package com.yuu.ymall.web.admin.commons.consts;\n\n/**\n * 常量类\n *\n * @Classname Consts\n * @Date 2019/6/15 20:13\n * @Created"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ChartData.java",
    "chars": 889,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * EChart 数据传输对象\n"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/City.java",
    "chars": 669,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport com.fasterxml.jackson.annotation.JsonIgnoreProperties;\n\nimport java"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/DataTablesResult.java",
    "chars": 1153,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport javax.servlet.http.Htt"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/IpWeatherResult.java",
    "chars": 714,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport com.fasterxml.jackson.annotation.JsonIgnoreProperties;\n\nimport java"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ItemDto.java",
    "chars": 334,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport com.yuu.ymall.domain.TbItem;\nimport lombok.Data;\n\n/**\n * @Classname"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderChartData.java",
    "chars": 643,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderDetail.java",
    "chars": 1158,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport com.yuu.ymall.domain.TbOrder;\nimport com.yuu.ymall.domain.TbOrderIt"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ZTreeNode.java",
    "chars": 608,
    "preview": "package com.yuu.ymall.web.admin.commons.dto;\n\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.io.Serializable;\n"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/es/ESItem.java",
    "chars": 2665,
    "preview": "package com.yuu.ymall.web.admin.commons.es;\n\nimport org.springframework.data.annotation.Id;\nimport org.springframework.d"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/shiro/MyRealm.java",
    "chars": 1663,
    "preview": "package com.yuu.ymall.web.admin.commons.shiro;\n\nimport com.yuu.ymall.domain.TbUser;\nimport com.yuu.ymall.web.admin.servi"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/swagger/SwaggerConfiguration.java",
    "chars": 2179,
    "preview": "package com.yuu.ymall.web.admin.commons.swagger;\n\nimport io.swagger.annotations.ApiOperation;\nimport org.slf4j.Logger;\ni"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/DtoUtil.java",
    "chars": 1600,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport com.yuu.ymall.domain.TbItemCat;\nimport com.yuu.ymall.domain.TbPan"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IDUtil.java",
    "chars": 548,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport java.util.Random;\n\n/**\n * @Classname IDUtil\n * @Date 2019/6/5 23:"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IPInfoUtil.java",
    "chars": 3109,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport com.yuu.ymall.commons.utils.HttpUtil;\nimport com.yuu.ymall.common"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ObjectUtil.java",
    "chars": 1315,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport com.google.common.collect.Maps;\nimport com.yuu.ymall.commons.util"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/QiniuUtil.java",
    "chars": 6645,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport com.google.gson.Gson;\nimport com.qiniu.common.QiniuException;\nimp"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ThreadPoolUtil.java",
    "chars": 1010,
    "preview": "package com.yuu.ymall.web.admin.commons.utils;\n\nimport java.util.concurrent.ArrayBlockingQueue;\nimport java.util.concurr"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbAddressMapper.java",
    "chars": 314,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbExpressMapper.java",
    "chars": 635,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemCatMapper.java",
    "chars": 602,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemDescMapper.java",
    "chars": 316,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemMapper.java",
    "chars": 1109,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbMemberMapper.java",
    "chars": 1426,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderItemMapper.java",
    "chars": 827,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderMapper.java",
    "chars": 1307,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderShippingMapper.java",
    "chars": 458,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelContentMapper.java",
    "chars": 782,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelMapper.java",
    "chars": 609,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbUserMapper.java",
    "chars": 1020,
    "preview": "package com.yuu.ymall.web.admin.mapper;\n\nimport com.yuu.ymall.commons.persistence.BaseMapper;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/repositories/ItemRepository.java",
    "chars": 341,
    "preview": "package com.yuu.ymall.web.admin.repositories;\n\nimport com.yuu.ymall.web.admin.commons.es.ESItem;\nimport org.springframew"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ContentService.java",
    "chars": 1005,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbPan"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/CountService.java",
    "chars": 434,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\n\n/**\n * @author by Yuu\n * @classn"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ExpressService.java",
    "chars": 767,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbExp"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemCatService.java",
    "chars": 781,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbIte"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemService.java",
    "chars": 1333,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbIte"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/MemberService.java",
    "chars": 1919,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbMem"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/OrderService.java",
    "chars": 1266,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbOrd"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/PanelService.java",
    "chars": 796,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbPan"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SearchService.java",
    "chars": 404,
    "preview": "package com.yuu.ymall.web.admin.service;\n\n/**\n * 搜索服务\n *\n * @author by Yuu\n * @classname SearchService\n * @date 2019/7/9"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SystemService.java",
    "chars": 287,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\n\n/**\n * @Classname SystemService\n"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/UserService.java",
    "chars": 1498,
    "preview": "package com.yuu.ymall.web.admin.service;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain.TbUse"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ContentServiceImpl.java",
    "chars": 4736,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/CountServiceImpl.java",
    "chars": 6560,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport cn.hutool.core.date.DateUnit;\nimport cn.hutool.core.date.DateUtil;"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ExpressServiceImpl.java",
    "chars": 2440,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemCatServiceImpl.java",
    "chars": 3261,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.commons"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemServiceImpl.java",
    "chars": 5763,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/MemberServiceImpl.java",
    "chars": 7936,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/OrderServiceImpl.java",
    "chars": 4254,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/PanelServiceImpl.java",
    "chars": 3253,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.commons"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SearchServiceImpl.java",
    "chars": 3055,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.yuu.ymall.domain.TbItem;\nimport com.yuu.ymall.web.admin.common"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SystemServiceImpl.java",
    "chars": 1169,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domain."
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/UserServiceImpl.java",
    "chars": 4839,
    "preview": "package com.yuu.ymall.web.admin.service.impl;\n\nimport com.github.pagehelper.PageHelper;\nimport com.github.pagehelper.Pag"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ContentController.java",
    "chars": 1942,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/CountController.java",
    "chars": 1424,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.web.a"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ExpressController.java",
    "chars": 1792,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemCatController.java",
    "chars": 1800,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemController.java",
    "chars": 3953,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/MemberController.java",
    "chars": 4500,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/OrderController.java",
    "chars": 3045,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PageController.java",
    "chars": 1000,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport org.springframework.stereotype.Controller;\nimport org.springfram"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PanelController.java",
    "chars": 2402,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.domai"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SwaggerController.java",
    "chars": 881,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport o"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SystemController.java",
    "chars": 1453,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.web.a"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UploadController.java",
    "chars": 3607,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.web.admin.commons.utils.QiniuUtil;\nimport io.swagg"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UserController.java",
    "chars": 7108,
    "preview": "package com.yuu.ymall.web.admin.web.controller;\n\nimport com.yuu.ymall.commons.dto.BaseResult;\nimport com.yuu.ymall.commo"
  },
  {
    "path": "ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/interceptor/PermissionInterceptor.java",
    "chars": 1374,
    "preview": "package com.yuu.ymall.web.admin.web.interceptor;\n\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.subject"
  },
  {
    "path": "ymall-web-admin/src/main/resources/generatorConfig.xml",
    "chars": 1728,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE generatorConfiguration\n        PUBLIC \"-//mybatis.org//DTD MyBatis Gene"
  },
  {
    "path": "ymall-web-admin/src/main/resources/log4j.properties",
    "chars": 515,
    "preview": "log4j.rootLogger=INFO, console, file\n\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.lay"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbAddressMapper.xml",
    "chars": 2428,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbExpressMapper.xml",
    "chars": 2489,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbItemCatMapper.xml",
    "chars": 2812,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbItemDescMapper.xml",
    "chars": 1716,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbItemMapper.xml",
    "chars": 5051,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbMemberMapper.xml",
    "chars": 6049,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbOrderItemMapper.xml",
    "chars": 3673,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbOrderMapper.xml",
    "chars": 6509,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbOrderShippingMapper.xml",
    "chars": 3527,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbPanelContentMapper.xml",
    "chars": 4541,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbPanelMapper.xml",
    "chars": 2807,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mapper/TbUserMapper.xml",
    "chars": 2571,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "ymall-web-admin/src/main/resources/mybatis-config.xml",
    "chars": 2238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\" \"http://mybat"
  },
  {
    "path": "ymall-web-admin/src/main/resources/resource.properties",
    "chars": 66,
    "preview": "# Ʒ黺ǰ׺\nPRODUCT_ITEM=PRODUCT_ITEM\n\n# ໺ key\nHEADER_CATE=HEADER_CATE\n"
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context-druid.xml",
    "chars": 1964,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www."
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context-elasticsearch.xml",
    "chars": 1059,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http"
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context-mybatis.xml",
    "chars": 982,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www."
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context-redis.xml",
    "chars": 2723,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http"
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context-shiro.xml",
    "chars": 1355,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http"
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-context.xml",
    "chars": 1205,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:context=\""
  },
  {
    "path": "ymall-web-admin/src/main/resources/spring-mvc.xml",
    "chars": 2704,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www."
  },
  {
    "path": "ymall-web-admin/src/main/resources/ymall.properties",
    "chars": 907,
    "preview": "#============================#\n#==== Database settings ====#\n#============================#\n\n# JDBC\njdbc.driverClass=com"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/includes/footer.jsp",
    "chars": 1337,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n\n<!-- Base -->\n<script type=\"text/javascript\" src=\"/st"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/includes/header.jsp",
    "chars": 1401,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n\n<meta charset=\"utf-8\">\n<meta name=\"renderer\" content="
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/admin-form.jsp",
    "chars": 4557,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/admin-list.jsp",
    "chars": 5363,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/change-admin-password.jsp",
    "chars": 3356,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!--_meta 作为公共模版分离出去-->\n<!DOCTYPE HTML>\n<html>\n<head>\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/change-password.jsp",
    "chars": 2015,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!--_meta 作为公共模版分离出去-->\n<!DOCTYPE HTML>\n<html>\n<head>\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/chart-order.jsp",
    "chars": 5613,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/choose-category.jsp",
    "chars": 1428,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <!-- ZTree -->\n    <"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/choose-parent-category.jsp",
    "chars": 1464,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/choose-product.jsp",
    "chars": 4320,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/content-common-form.jsp",
    "chars": 7920,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/content-common-list.jsp",
    "chars": 11041,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/content-header-list.jsp",
    "chars": 5563,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/content-panel-add.jsp",
    "chars": 4022,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/content-panel.jsp",
    "chars": 7889,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/index.jsp",
    "chars": 8686,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/lock-screen.jsp",
    "chars": 3851,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta char"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/login.jsp",
    "chars": 6822,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html lang=\"en\">\n<head>\n    <title>YMa"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/member-ban.jsp",
    "chars": 6041,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/member-form.jsp",
    "chars": 9330,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!--_meta 作为公共模版分离出去-->\n<!DOCTYPE HTML>\n<html>\n<head>\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/member-list.jsp",
    "chars": 8212,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/order-deliver.jsp",
    "chars": 2101,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/order-list.jsp",
    "chars": 11270,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/order-print.jsp",
    "chars": 4644,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/product-category-add.jsp",
    "chars": 2792,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/product-category.jsp",
    "chars": 9258,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/product-form.jsp",
    "chars": 9112,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<%\n    request.setCharacterEncoding(\"UTF-8\");\n    Stri"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/product-list.jsp",
    "chars": 10709,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/system-express-form.jsp",
    "chars": 1928,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/system-express.jsp",
    "chars": 4481,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE HTML>\n<html>\n<head>\n    <jsp:include page=\"."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/views/welcome.jsp",
    "chars": 28772,
    "preview": "<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta char"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/WEB-INF/web.xml",
    "chars": 2833,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"\n         xmlns:xsi=\"http://ww"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/app/app.js",
    "chars": 10241,
    "preview": "var App = function () {\n\n    // iCheck\n    var _masterCheckbox;\n    var _checkbox;\n\n    // 用于存放 ID 的数组\n    var _idArray;"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/app/common.js",
    "chars": 1335,
    "preview": "/*刷新表格*/\nfunction refresh(){\n    var table = $('.table').DataTable();\n    table.ajax.reload(null,false);// 刷新表格数据,分页信息不会"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/app/const.js",
    "chars": 58,
    "preview": "// 通用的常量\nvar ERROR_REQUEST_MESSAGE = \"连接服务器失败,请检查您的网络信息\";\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/app/validate.js",
    "chars": 4814,
    "preview": "/**\n * 函数对象\n */\nvar Validate = function () {\n\n    /**\n     * 增加自定义验证规则\n     */\n    var handlerInitDecimalsValidate = fun"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/DD_belatedPNG_0.0.8a-min.js",
    "chars": 7019,
    "preview": "/**\n* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.\n* Author: Drew Diller\n* Emai"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/Hui-iconfont/1.0.8/demo.html",
    "chars": 59338,
    "preview": "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\"/>\n<title>Hui-iconfont_v1.0.8</title>\n<link href=\"http://static.h-ui."
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/Hui-iconfont/1.0.8/iconfont.css",
    "chars": 16551,
    "preview": "/* -----------H-ui前端框架-------------\n* iconfont.css v1.0.8\n* http://www.h-ui.net/\n* Created & Modified by guojunhui\n* Dat"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/WdatePicker.js",
    "chars": 10179,
    "preview": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\nvar $dp,WdatePicker;(function(){var $"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/calendar.js",
    "chars": 22540,
    "preview": "/*\n * My97 DatePicker 4.8 Beta4\n * License: http://www.my97.net/dp/license.asp\n */\neval(function(p,a,c,k,e,d){e=function"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/en.js",
    "chars": 631,
    "preview": "var $lang={\nerrAlertMsg: \"Invalid date or the date out of range,redo or not?\",\naWeekStr: [\"wk\", \"Sun\", \"Mon\", \"Tue\", \"We"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/zh-cn.js",
    "chars": 1076,
    "preview": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/zh-tw.js",
    "chars": 1075,
    "preview": "var $lang={\nerrAlertMsg: \"\\u4E0D\\u5408\\u6CD5\\u7684\\u65E5\\u671F\\u683C\\u5F0F\\u6216\\u8005\\u65E5\\u671F\\u8D85\\u51FA\\u9650\\u5B"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/WdatePicker.css",
    "chars": 144,
    "preview": ".Wdate{\n\tbackground:#fff url(datePicker.gif) no-repeat right;\n}\n.Wdate::-ms-clear{display:none;}\n\n.WdateFmtErr{\n\tfont-we"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/default/datepicker.css",
    "chars": 3511,
    "preview": "/* \n * My97 DatePicker 4.8\n */\n\n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#FFFFFF;\n\tborder:#bbb 1px solid;\n\tpadding:2px"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/twoer/datepicker-dev.css",
    "chars": 4425,
    "preview": "/* \n * My97 DatePicker 4.8 \n * auther : zhangkun , hejianting(design)\n * email : zhangkun_net@hotmail.com\n * date : 2012"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/twoer/datepicker.css",
    "chars": 3486,
    "preview": ".WdateDiv{position:relative;width:190px;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padd"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/whyGreen/datepicker.css",
    "chars": 3678,
    "preview": "/* \n * My97 DatePicker 4.8 Skin:whyGreen\n */ \n.WdateDiv{\n\twidth:180px;\n\tbackground-color:#fff;\n\tborder:#C5E1E4 1px solid"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/busuanzi.pure.mini.js",
    "chars": 1884,
    "preview": "var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||\"interactive\"===document.readyState||\"c"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/changyan.js",
    "chars": 2526,
    "preview": "(function() {\n    if (window.changyan !== undefined || window.cyan !== undefined) {\n        return;\n    }\n    var create"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/datatables/Chinese.json",
    "chars": 601,
    "preview": "{\n  \"sProcessing\":   \"&nbsp;&nbsp;&nbsp;处理中...\",\n  \"sLengthMenu\":   \"显示 _MENU_ 条\",\n  \"sZeroRecords\":  \"没有找到匹配的记录\",\n  \"sI"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/css/font-awesome-ie7.css",
    "chars": 41311,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/css/font-awesome.css",
    "chars": 27232,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/bootstrap.less",
    "chars": 2084,
    "preview": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/core.less",
    "chars": 2101,
    "preview": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  .icon-FontAwesome();\n}\n\n["
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/extras.less",
    "chars": 2398,
    "preview": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n.icon-stack();\n\n/* Animated rotating icon */\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/font-awesome-ie7.less",
    "chars": 19299,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/font-awesome.less",
    "chars": 1319,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/icons.less",
    "chars": 17555,
    "preview": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters th"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/mixins.less",
    "chars": 1041,
    "preview": "// Mixins\n// --------------------------\n\n.icon(@icon) {\n  .icon-FontAwesome();\n  content: @icon;\n}\n\n.icon-FontAwesome() "
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/path.less",
    "chars": 742,
    "preview": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('@{FontAwesomePath}"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/variables.less",
    "chars": 8888,
    "preview": "// Variables\n// --------------------------\n\n@FontAwesomePath:    \"../font\";\n//@FontAwesomePath:    \"//netdna.bootstrapcd"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_bootstrap.scss",
    "chars": 2088,
    "preview": "/* BOOTSTRAP SPECIFIC CLASSES\n * -------------------------- */\n\n/* Bootstrap 2.0 sprites.less reset */\n[class^=\"icon-\"],"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_core.scss",
    "chars": 2157,
    "preview": "/* FONT AWESOME CORE\n * -------------------------- */\n\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n  @include icon-FontAwesome"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_extras.scss",
    "chars": 2406,
    "preview": "/* EXTRAS\n * -------------------------- */\n\n/* Stacked and layered icon */\n@include icon-stack();\n\n/* Animated rotating "
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_icons.scss",
    "chars": 17555,
    "preview": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n * readers do not read off random characters th"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_mixins.scss",
    "chars": 1078,
    "preview": "// Mixins\n// --------------------------\n\n@mixin icon($icon) {\n  @include icon-FontAwesome();\n  content: $icon;\n}\n\n@mixin"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_path.scss",
    "chars": 753,
    "preview": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$FontAwesomePath"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_variables.scss",
    "chars": 8061,
    "preview": "// Variables\n// --------------------------\n\n$FontAwesomePath: \"../font\" !default;\n$FontAwesomeVersion: \"3.2.1\" !default;"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/font-awesome-ie7.scss",
    "chars": 22328,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/font-awesome.scss",
    "chars": 1284,
    "preview": "/*!\n *  Font Awesome 3.2.1\n *  the iconic font designed for Bootstrap\n *  ----------------------------------------------"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/Makefile",
    "chars": 163,
    "preview": "dist: all\n\t@echo Done\n\nall:\n\t@echo Compiling coffee script\n\tcoffee -c *.coffee\n\nwatch:\n\t@echo Watch coffee script files\n"
  },
  {
    "path": "ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/Readme.md",
    "chars": 4217,
    "preview": "easy pie chart\n==============\n\nEasy pie chart is a jQuery plugin that uses the canvas element to render simple pie chart"
  }
]

// ... and 728 more files (download for full content)

About this extraction

This page contains the full source code of the 71yuu/YMall GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 928 files (10.1 MB), approximately 2.7M tokens, and a symbol index with 2607 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!