├── .gitignore
├── README.md
├── admin-ui
├── .babelrc
├── .editorconfig
├── .eslintrc.js
├── .postcssrc.js
├── build
│ ├── build.js
│ ├── check-versions.js
│ ├── logo.png
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config
│ ├── demo.env.js
│ ├── dev.env.js
│ ├── index.js
│ └── prod.env.js
├── favicon.ico
├── index.html
├── package-lock.json
├── package.json
├── src
│ ├── .umi
│ │ ├── .cache
│ │ │ └── babel-loader
│ │ │ │ ├── 02e4bf11e25fe0f713f7c5b427e59863.json.gz
│ │ │ │ ├── 09a8e0db3fdbf76304ad9f2278eac133.json.gz
│ │ │ │ ├── 12348e2135b3ea302313fd0944a6cf3c.json.gz
│ │ │ │ ├── 136c108a20a389dff340a4fd1fc46853.json.gz
│ │ │ │ ├── 27fd0298291cda834506e6ccc9a32a88.json.gz
│ │ │ │ ├── 35e8117ceceb1e168fa80e5bb6787a49.json.gz
│ │ │ │ ├── 35eb3c121c5d15f751ea53c2a50eee8f.json.gz
│ │ │ │ ├── 3885ed1e71102925a958f43185bca8f8.json.gz
│ │ │ │ ├── 3d8ded884132d95b70ec91cb52029657.json.gz
│ │ │ │ ├── 3df77ae68fc3d7f65b2e3c1175f1b25f.json.gz
│ │ │ │ ├── 464cbd3326d998c97a89943d4dcbb6d7.json.gz
│ │ │ │ ├── 5230467b7a6a325a598b5b86c136da0a.json.gz
│ │ │ │ ├── 6356e389603bd0ce9c7f9a505fdf1ef4.json.gz
│ │ │ │ ├── 63edd7d879e47bb5c207f473f8a79cd8.json.gz
│ │ │ │ ├── 6662242c3df05193175fba1c8feb9c09.json.gz
│ │ │ │ ├── 71b546e667e5f104c1102a873994acfd.json.gz
│ │ │ │ ├── 73cacfef98ab799ab7b5ae35ec4dffc1.json.gz
│ │ │ │ ├── 752393a5717ae70ce144f00265326bff.json.gz
│ │ │ │ ├── 752f86e3ea2b7d3bcace5fdbba6a5d49.json.gz
│ │ │ │ ├── 77f246fa4fe944808b245ef57bcb25cf.json.gz
│ │ │ │ ├── 784cb26686addf2a372ce7741f410805.json.gz
│ │ │ │ ├── 7e001ee36321c77c9a4c23a54a37b84d.json.gz
│ │ │ │ ├── 80a14c71fc20fe02225b907b4a4b6a9f.json.gz
│ │ │ │ ├── 90405bb085405f8b940c6772b7254597.json.gz
│ │ │ │ ├── 9204908d46812329fa0ad27559ab5468.json.gz
│ │ │ │ ├── a55f1b0a8384990f0218d5551963efa0.json.gz
│ │ │ │ ├── adaa5d0bdf64c4ed00538ebf0f7ed3bf.json.gz
│ │ │ │ ├── b0cd5d7fa9791f6fad190bd3e7d342cb.json.gz
│ │ │ │ ├── b18ae66316975f30c0c8f69eaf5172b1.json.gz
│ │ │ │ ├── b2c24e5d7257fea2a3359b087546abe9.json.gz
│ │ │ │ ├── b70f1023cd6f7687b3596a0692a4d989.json.gz
│ │ │ │ ├── b79c9979c2691bd291f47ba3464f46b3.json.gz
│ │ │ │ ├── bc49e387347b257157da5fcd780328c7.json.gz
│ │ │ │ ├── c91148f0c8ef090f898a73f5140ef3ab.json.gz
│ │ │ │ ├── ca888dd09575c465b41178e4a6d968ee.json.gz
│ │ │ │ ├── ce246a0191deb8b9d0cb8cd48a8e90af.json.gz
│ │ │ │ ├── db8812e3ed8607ccbe55addd1c10a99a.json.gz
│ │ │ │ ├── ddc871961624e54ed23c3129de1f6707.json.gz
│ │ │ │ ├── df4a6d0e2cdcde1bf3c3aac337d7a333.json.gz
│ │ │ │ ├── e0852911a3feb0733ebd8bc7ca2e7d4b.json.gz
│ │ │ │ ├── e750dc5e5db3e6ed609f58d3370bd895.json.gz
│ │ │ │ ├── f2ef171e3350a7b9d2e90bf8c4b385c4.json.gz
│ │ │ │ └── f91948a99f6add6a54e2bd4b52657a2d.json.gz
│ │ ├── core
│ │ │ ├── devScripts.ts
│ │ │ ├── history.ts
│ │ │ ├── plugin.ts
│ │ │ ├── pluginConfig.d.ts
│ │ │ ├── pluginRegister.ts
│ │ │ ├── polyfill.ts
│ │ │ ├── routes.ts
│ │ │ └── umiExports.ts
│ │ └── umi.ts
│ ├── App.vue
│ ├── api
│ │ ├── ad.js
│ │ ├── admin.js
│ │ ├── article.js
│ │ ├── brand.js
│ │ ├── category.js
│ │ ├── comment.js
│ │ ├── coupon.js
│ │ ├── dashboard.js
│ │ ├── goods.js
│ │ ├── groupon.js
│ │ ├── issue.js
│ │ ├── keyword.js
│ │ ├── login.js
│ │ ├── order.js
│ │ ├── profile.js
│ │ ├── qiniu.js
│ │ ├── region.js
│ │ ├── role.js
│ │ ├── stat.js
│ │ ├── storage.js
│ │ ├── topic.js
│ │ └── user.js
│ ├── assets
│ │ ├── 401_images
│ │ │ └── 401.gif
│ │ ├── 404_images
│ │ │ ├── 404.png
│ │ │ └── 404_cloud.png
│ │ └── custom-theme
│ │ │ ├── fonts
│ │ │ ├── element-icons.ttf
│ │ │ └── element-icons.woff
│ │ │ └── index.css
│ ├── components
│ │ ├── BackToTop
│ │ │ └── index.vue
│ │ ├── Breadcrumb
│ │ │ └── index.vue
│ │ ├── Hamburger
│ │ │ └── index.vue
│ │ ├── LangSelect
│ │ │ └── index.vue
│ │ ├── Pagination
│ │ │ └── index.vue
│ │ ├── Screenfull
│ │ │ └── index.vue
│ │ ├── ScrollPane
│ │ │ └── index.vue
│ │ ├── SizeSelect
│ │ │ └── index.vue
│ │ ├── SvgIcon
│ │ │ └── index.vue
│ │ └── ThemePicker
│ │ │ └── index.vue
│ ├── directive
│ │ ├── clipboard
│ │ │ ├── clipboard.js
│ │ │ └── index.js
│ │ └── permission
│ │ │ ├── index.js
│ │ │ └── permission.js
│ ├── filters
│ │ └── index.js
│ ├── icons
│ │ ├── index.js
│ │ ├── svg
│ │ │ ├── 404.svg
│ │ │ ├── bug.svg
│ │ │ ├── chart.svg
│ │ │ ├── clipboard.svg
│ │ │ ├── component.svg
│ │ │ ├── dashboard.svg
│ │ │ ├── documentation.svg
│ │ │ ├── drag.svg
│ │ │ ├── edit.svg
│ │ │ ├── email.svg
│ │ │ ├── example.svg
│ │ │ ├── excel.svg
│ │ │ ├── eye.svg
│ │ │ ├── form.svg
│ │ │ ├── guide 2.svg
│ │ │ ├── guide.svg
│ │ │ ├── icon.svg
│ │ │ ├── international.svg
│ │ │ ├── language.svg
│ │ │ ├── link.svg
│ │ │ ├── list.svg
│ │ │ ├── lock.svg
│ │ │ ├── message.svg
│ │ │ ├── money.svg
│ │ │ ├── nested.svg
│ │ │ ├── password.svg
│ │ │ ├── people.svg
│ │ │ ├── peoples.svg
│ │ │ ├── qq.svg
│ │ │ ├── shopping.svg
│ │ │ ├── size.svg
│ │ │ ├── star.svg
│ │ │ ├── tab.svg
│ │ │ ├── table.svg
│ │ │ ├── theme.svg
│ │ │ ├── tree.svg
│ │ │ ├── user.svg
│ │ │ ├── wechat.svg
│ │ │ └── zip.svg
│ │ └── svgo.yml
│ ├── lang
│ │ ├── en.js
│ │ ├── index.js
│ │ └── zh.js
│ ├── main.js
│ ├── permission.js
│ ├── router
│ │ └── index.js
│ ├── store
│ │ ├── getters.js
│ │ ├── index.js
│ │ └── modules
│ │ │ ├── app.js
│ │ │ ├── permission.js
│ │ │ ├── tagsView.js
│ │ │ └── user.js
│ ├── styles
│ │ ├── btn.scss
│ │ ├── element-ui.scss
│ │ ├── index.scss
│ │ ├── mixin.scss
│ │ ├── sidebar.scss
│ │ ├── transition.scss
│ │ └── variables.scss
│ ├── utils
│ │ ├── auth.js
│ │ ├── clipboard.js
│ │ ├── createUniqueString.js
│ │ ├── i18n.js
│ │ ├── index.js
│ │ ├── openWindow.js
│ │ ├── permission.js
│ │ ├── request.js
│ │ ├── scrollTo.js
│ │ └── validate.js
│ ├── vendor
│ │ ├── Export2Excel.js
│ │ └── Export2Zip.js
│ └── views
│ │ ├── dashboard
│ │ └── index.vue
│ │ ├── errorPage
│ │ ├── 401.vue
│ │ └── 404.vue
│ │ ├── goods
│ │ ├── comment.vue
│ │ ├── create.vue
│ │ ├── edit.vue
│ │ └── list.vue
│ │ ├── layout
│ │ ├── Layout.vue
│ │ ├── components
│ │ │ ├── AppMain.vue
│ │ │ ├── Navbar.vue
│ │ │ ├── Sidebar
│ │ │ │ ├── FixiOSBug.js
│ │ │ │ ├── Item.vue
│ │ │ │ ├── Link.vue
│ │ │ │ ├── SidebarItem.vue
│ │ │ │ └── index.vue
│ │ │ ├── TagsView.vue
│ │ │ └── index.js
│ │ └── mixin
│ │ │ └── ResizeHandler.js
│ │ ├── login
│ │ ├── authredirect.vue
│ │ └── index.vue
│ │ ├── mall
│ │ ├── brand.vue
│ │ ├── category.vue
│ │ ├── issue.vue
│ │ ├── keyword.vue
│ │ ├── order.vue
│ │ └── region.vue
│ │ ├── profile
│ │ └── password.vue
│ │ ├── promotion
│ │ ├── ad.vue
│ │ ├── articleCreate.vue
│ │ ├── articleEdit.vue
│ │ ├── articleList.vue
│ │ ├── coupon.vue
│ │ ├── couponDetail.vue
│ │ ├── grouponActivity.vue
│ │ ├── grouponRule.vue
│ │ └── topic.vue
│ │ ├── redirect
│ │ └── index.vue
│ │ ├── stat
│ │ ├── goods.vue
│ │ ├── order.vue
│ │ └── user.vue
│ │ ├── sys
│ │ ├── admin.vue
│ │ ├── os.vue
│ │ └── role.vue
│ │ └── user
│ │ ├── address.vue
│ │ ├── collect.vue
│ │ ├── feedback.vue
│ │ ├── footprint.vue
│ │ ├── history.vue
│ │ └── user.vue
└── static
│ └── tinymce4.7.5
│ ├── langs
│ └── zh_CN.js
│ ├── plugins
│ ├── codesample
│ │ └── css
│ │ │ └── prism.css
│ ├── emoticons
│ │ └── img
│ │ │ ├── smiley-cool.gif
│ │ │ ├── smiley-cry.gif
│ │ │ ├── smiley-embarassed.gif
│ │ │ ├── smiley-foot-in-mouth.gif
│ │ │ ├── smiley-frown.gif
│ │ │ ├── smiley-innocent.gif
│ │ │ ├── smiley-kiss.gif
│ │ │ ├── smiley-laughing.gif
│ │ │ ├── smiley-money-mouth.gif
│ │ │ ├── smiley-sealed.gif
│ │ │ ├── smiley-smile.gif
│ │ │ ├── smiley-surprised.gif
│ │ │ ├── smiley-tongue-out.gif
│ │ │ ├── smiley-undecided.gif
│ │ │ ├── smiley-wink.gif
│ │ │ └── smiley-yell.gif
│ └── visualblocks
│ │ └── css
│ │ └── visualblocks.css
│ ├── skins
│ └── lightgray
│ │ ├── content.inline.min.css
│ │ ├── content.min.css
│ │ ├── fonts
│ │ ├── tinymce-mobile.woff
│ │ ├── tinymce-small.eot
│ │ ├── tinymce-small.svg
│ │ ├── tinymce-small.ttf
│ │ ├── tinymce-small.woff
│ │ ├── tinymce.eot
│ │ ├── tinymce.svg
│ │ ├── tinymce.ttf
│ │ └── tinymce.woff
│ │ ├── img
│ │ ├── anchor.gif
│ │ ├── loader.gif
│ │ ├── object.gif
│ │ └── trans.gif
│ │ ├── skin.min.css
│ │ └── skin.min.css.map
│ └── tinymce.min.js
├── doc
├── dts-shop-表结构.sql
├── dts-shop-表结构和数据-20200326.sql
└── dts-shop模型域.ndm
├── dts-admin-api
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── qiguliuxing
│ │ └── dts
│ │ └── admin
│ │ ├── annotation
│ │ └── RequiresPermissionsDesc.java
│ │ ├── api
│ │ └── Application.java
│ │ ├── config
│ │ ├── ShiroConfig.java
│ │ └── ShiroExceptionHandler.java
│ │ ├── dao
│ │ ├── AccountVo.java
│ │ ├── GoodsAllinone.java
│ │ └── Product.java
│ │ ├── job
│ │ ├── CouponJob.java
│ │ ├── OrderJob.java
│ │ └── SettlementJob.java
│ │ ├── service
│ │ ├── AdminBrandService.java
│ │ ├── AdminGoodsService.java
│ │ └── AdminOrderService.java
│ │ ├── shiro
│ │ ├── AdminAuthorizingRealm.java
│ │ └── AdminWebSessionManager.java
│ │ ├── util
│ │ ├── AdminResponseCode.java
│ │ ├── AdminResponseUtil.java
│ │ ├── ArticleType.java
│ │ ├── CatVo.java
│ │ ├── DtsBrandVo.java
│ │ ├── PermVo.java
│ │ ├── Permission.java
│ │ ├── PermissionUtil.java
│ │ └── StatVo.java
│ │ └── web
│ │ ├── AdminAdController.java
│ │ ├── AdminAddressController.java
│ │ ├── AdminAdminController.java
│ │ ├── AdminArticleController.java
│ │ ├── AdminAuthController.java
│ │ ├── AdminBrandController.java
│ │ ├── AdminBrokerageController.java
│ │ ├── AdminCategoryController.java
│ │ ├── AdminCollectController.java
│ │ ├── AdminCommentController.java
│ │ ├── AdminCouponController.java
│ │ ├── AdminDashbordController.java
│ │ ├── AdminFeedbackController.java
│ │ ├── AdminFootprintController.java
│ │ ├── AdminGoodsController.java
│ │ ├── AdminGrouponController.java
│ │ ├── AdminHistoryController.java
│ │ ├── AdminIndexController.java
│ │ ├── AdminIssueController.java
│ │ ├── AdminKeywordController.java
│ │ ├── AdminOrderController.java
│ │ ├── AdminProfileController.java
│ │ ├── AdminRegionController.java
│ │ ├── AdminRoleController.java
│ │ ├── AdminStatController.java
│ │ ├── AdminStorageController.java
│ │ ├── AdminTopicController.java
│ │ └── AdminUserController.java
│ └── resources
│ ├── application.yml
│ └── logback-spring.xml
├── dts-core
├── .gitignore
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── qiguliuxing
│ │ │ └── dts
│ │ │ └── core
│ │ │ ├── config
│ │ │ ├── AsyncConfig.java
│ │ │ ├── CorsConfig.java
│ │ │ ├── GlobalExceptionHandler.java
│ │ │ ├── JacksonConfig.java
│ │ │ ├── ValidatorConfiguration.java
│ │ │ ├── WxConfig.java
│ │ │ └── WxProperties.java
│ │ │ ├── consts
│ │ │ └── CommConsts.java
│ │ │ ├── express
│ │ │ ├── ExpressService.java
│ │ │ ├── config
│ │ │ │ ├── ExpressAutoConfiguration.java
│ │ │ │ └── ExpressProperties.java
│ │ │ └── dao
│ │ │ │ ├── ExpressInfo.java
│ │ │ │ └── Traces.java
│ │ │ ├── notify
│ │ │ ├── EmailHelper.java
│ │ │ ├── NotifyService.java
│ │ │ ├── NotifyType.java
│ │ │ ├── SmsResult.java
│ │ │ ├── SmsSender.java
│ │ │ ├── SslMailSender.java
│ │ │ ├── TencentSmsSender.java
│ │ │ ├── WxTemplateSender.java
│ │ │ └── config
│ │ │ │ ├── NotifyAutoConfiguration.java
│ │ │ │ └── NotifyProperties.java
│ │ │ ├── qcode
│ │ │ └── QCodeService.java
│ │ │ ├── storage
│ │ │ ├── AliyunStorage.java
│ │ │ ├── LocalStorage.java
│ │ │ ├── QiniuStorage.java
│ │ │ ├── Storage.java
│ │ │ ├── StorageService.java
│ │ │ ├── TencentStorage.java
│ │ │ └── config
│ │ │ │ ├── StorageAutoConfiguration.java
│ │ │ │ └── StorageProperties.java
│ │ │ ├── system
│ │ │ ├── BaseConfig.java
│ │ │ ├── ConfigService.java
│ │ │ ├── SystemConfig.java
│ │ │ └── SystemInistService.java
│ │ │ ├── type
│ │ │ ├── BrokerageTypeEnum.java
│ │ │ └── UserTypeEnum.java
│ │ │ ├── util
│ │ │ ├── CharUtil.java
│ │ │ ├── DateTimeUtil.java
│ │ │ ├── HttpUtil.java
│ │ │ ├── JacksonUtil.java
│ │ │ ├── RegexUtil.java
│ │ │ ├── ResponseUtil.java
│ │ │ ├── SystemInfoPrinter.java
│ │ │ └── bcrypt
│ │ │ │ ├── BCrypt.java
│ │ │ │ └── BCryptPasswordEncoder.java
│ │ │ └── validator
│ │ │ ├── Order.java
│ │ │ ├── OrderValidator.java
│ │ │ ├── Sort.java
│ │ │ └── SortValidator.java
│ └── resources
│ │ ├── .gitignore
│ │ ├── application-demo.yml
│ │ ├── application-dev.yml
│ │ ├── back.png
│ │ └── back_groupon.png
│ └── test
│ ├── java
│ └── com
│ │ └── qiguliuxing
│ │ └── dts
│ │ └── core
│ │ └── AliyunStorageTest.java
│ └── resources
│ └── 二维码.jpeg
├── dts-dao
├── .gitignore
├── mybatis-generator
│ └── generatorConfig.xml
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── qiguliuxing
│ │ │ └── dts
│ │ │ └── db
│ │ │ ├── dao
│ │ │ ├── DtsAccountTraceMapper.java
│ │ │ ├── DtsAdMapper.java
│ │ │ ├── DtsAddressMapper.java
│ │ │ ├── DtsAdminMapper.java
│ │ │ ├── DtsArticleMapper.java
│ │ │ ├── DtsBrandMapper.java
│ │ │ ├── DtsCartMapper.java
│ │ │ ├── DtsCategoryMapper.java
│ │ │ ├── DtsCollectMapper.java
│ │ │ ├── DtsCommentMapper.java
│ │ │ ├── DtsCouponMapper.java
│ │ │ ├── DtsCouponUserMapper.java
│ │ │ ├── DtsDelPictureMapper.java
│ │ │ ├── DtsFeedbackMapper.java
│ │ │ ├── DtsFootprintMapper.java
│ │ │ ├── DtsGoodsAttributeMapper.java
│ │ │ ├── DtsGoodsMapper.java
│ │ │ ├── DtsGoodsProductMapper.java
│ │ │ ├── DtsGoodsSpecificationMapper.java
│ │ │ ├── DtsGrouponMapper.java
│ │ │ ├── DtsGrouponRulesMapper.java
│ │ │ ├── DtsIssueMapper.java
│ │ │ ├── DtsKeywordMapper.java
│ │ │ ├── DtsOrderGoodsMapper.java
│ │ │ ├── DtsOrderMapper.java
│ │ │ ├── DtsPermissionMapper.java
│ │ │ ├── DtsRegionMapper.java
│ │ │ ├── DtsRoleMapper.java
│ │ │ ├── DtsSearchHistoryMapper.java
│ │ │ ├── DtsStorageMapper.java
│ │ │ ├── DtsSystemMapper.java
│ │ │ ├── DtsTopicMapper.java
│ │ │ ├── DtsUserAccountMapper.java
│ │ │ ├── DtsUserFormidMapper.java
│ │ │ ├── DtsUserMapper.java
│ │ │ └── ex
│ │ │ │ ├── AccountMapperEx.java
│ │ │ │ ├── GoodsProductMapper.java
│ │ │ │ ├── OrderMapper.java
│ │ │ │ └── StatMapper.java
│ │ │ ├── domain
│ │ │ ├── DtsAccountTrace.java
│ │ │ ├── DtsAccountTraceExample.java
│ │ │ ├── DtsAd.java
│ │ │ ├── DtsAdExample.java
│ │ │ ├── DtsAddress.java
│ │ │ ├── DtsAddressExample.java
│ │ │ ├── DtsAdmin.java
│ │ │ ├── DtsAdminExample.java
│ │ │ ├── DtsArticle.java
│ │ │ ├── DtsArticleExample.java
│ │ │ ├── DtsBrand.java
│ │ │ ├── DtsBrandExample.java
│ │ │ ├── DtsCart.java
│ │ │ ├── DtsCartExample.java
│ │ │ ├── DtsCategory.java
│ │ │ ├── DtsCategoryExample.java
│ │ │ ├── DtsCollect.java
│ │ │ ├── DtsCollectExample.java
│ │ │ ├── DtsComment.java
│ │ │ ├── DtsCommentExample.java
│ │ │ ├── DtsCoupon.java
│ │ │ ├── DtsCouponExample.java
│ │ │ ├── DtsCouponUser.java
│ │ │ ├── DtsCouponUserExample.java
│ │ │ ├── DtsDelPicture.java
│ │ │ ├── DtsDelPictureExample.java
│ │ │ ├── DtsFeedback.java
│ │ │ ├── DtsFeedbackExample.java
│ │ │ ├── DtsFootprint.java
│ │ │ ├── DtsFootprintExample.java
│ │ │ ├── DtsGoods.java
│ │ │ ├── DtsGoodsAttribute.java
│ │ │ ├── DtsGoodsAttributeExample.java
│ │ │ ├── DtsGoodsExample.java
│ │ │ ├── DtsGoodsProduct.java
│ │ │ ├── DtsGoodsProductExample.java
│ │ │ ├── DtsGoodsSpecification.java
│ │ │ ├── DtsGoodsSpecificationExample.java
│ │ │ ├── DtsGroupon.java
│ │ │ ├── DtsGrouponExample.java
│ │ │ ├── DtsGrouponRules.java
│ │ │ ├── DtsGrouponRulesExample.java
│ │ │ ├── DtsIssue.java
│ │ │ ├── DtsIssueExample.java
│ │ │ ├── DtsKeyword.java
│ │ │ ├── DtsKeywordExample.java
│ │ │ ├── DtsOrder.java
│ │ │ ├── DtsOrderExample.java
│ │ │ ├── DtsOrderGoods.java
│ │ │ ├── DtsOrderGoodsExample.java
│ │ │ ├── DtsPermission.java
│ │ │ ├── DtsPermissionExample.java
│ │ │ ├── DtsRegion.java
│ │ │ ├── DtsRegionExample.java
│ │ │ ├── DtsRole.java
│ │ │ ├── DtsRoleExample.java
│ │ │ ├── DtsSearchHistory.java
│ │ │ ├── DtsSearchHistoryExample.java
│ │ │ ├── DtsStorage.java
│ │ │ ├── DtsStorageExample.java
│ │ │ ├── DtsSystem.java
│ │ │ ├── DtsSystemExample.java
│ │ │ ├── DtsTopic.java
│ │ │ ├── DtsTopicExample.java
│ │ │ ├── DtsUser.java
│ │ │ ├── DtsUserAccount.java
│ │ │ ├── DtsUserAccountExample.java
│ │ │ ├── DtsUserExample.java
│ │ │ ├── DtsUserFormid.java
│ │ │ ├── DtsUserFormidExample.java
│ │ │ └── UserVo.java
│ │ │ ├── mybatis
│ │ │ ├── JsonIntegerArrayTypeHandler.java
│ │ │ ├── JsonNodeTypeHandler.java
│ │ │ └── JsonStringArrayTypeHandler.java
│ │ │ ├── service
│ │ │ ├── CouponAssignService.java
│ │ │ ├── CouponVerifyService.java
│ │ │ ├── DtsAccountService.java
│ │ │ ├── DtsAdService.java
│ │ │ ├── DtsAddressService.java
│ │ │ ├── DtsAdminService.java
│ │ │ ├── DtsArticleService.java
│ │ │ ├── DtsBrandService.java
│ │ │ ├── DtsCartService.java
│ │ │ ├── DtsCategoryService.java
│ │ │ ├── DtsCollectService.java
│ │ │ ├── DtsCommentService.java
│ │ │ ├── DtsCouponService.java
│ │ │ ├── DtsCouponUserService.java
│ │ │ ├── DtsFeedbackService.java
│ │ │ ├── DtsFootprintService.java
│ │ │ ├── DtsGoodsAttributeService.java
│ │ │ ├── DtsGoodsProductService.java
│ │ │ ├── DtsGoodsService.java
│ │ │ ├── DtsGoodsSpecificationService.java
│ │ │ ├── DtsGrouponRulesService.java
│ │ │ ├── DtsGrouponService.java
│ │ │ ├── DtsIssueService.java
│ │ │ ├── DtsKeywordService.java
│ │ │ ├── DtsOrderGoodsService.java
│ │ │ ├── DtsOrderService.java
│ │ │ ├── DtsPermissionService.java
│ │ │ ├── DtsRegionService.java
│ │ │ ├── DtsRoleService.java
│ │ │ ├── DtsSearchHistoryService.java
│ │ │ ├── DtsStorageService.java
│ │ │ ├── DtsSystemConfigService.java
│ │ │ ├── DtsTopicService.java
│ │ │ ├── DtsUserFormIdService.java
│ │ │ ├── DtsUserService.java
│ │ │ └── StatService.java
│ │ │ └── util
│ │ │ ├── CouponConstant.java
│ │ │ ├── CouponUserConstant.java
│ │ │ ├── OrderHandleOption.java
│ │ │ └── OrderUtil.java
│ └── resources
│ │ └── com
│ │ └── qiguliuxing
│ │ └── dts
│ │ └── db
│ │ └── dao
│ │ ├── DtsAccountTraceMapper.xml
│ │ ├── DtsAdMapper.xml
│ │ ├── DtsAddressMapper.xml
│ │ ├── DtsAdminMapper.xml
│ │ ├── DtsArticleMapper.xml
│ │ ├── DtsBrandMapper.xml
│ │ ├── DtsCartMapper.xml
│ │ ├── DtsCategoryMapper.xml
│ │ ├── DtsCollectMapper.xml
│ │ ├── DtsCommentMapper.xml
│ │ ├── DtsCouponMapper.xml
│ │ ├── DtsCouponUserMapper.xml
│ │ ├── DtsDelPictureMapper.xml
│ │ ├── DtsFeedbackMapper.xml
│ │ ├── DtsFootprintMapper.xml
│ │ ├── DtsGoodsAttributeMapper.xml
│ │ ├── DtsGoodsMapper.xml
│ │ ├── DtsGoodsProductMapper.xml
│ │ ├── DtsGoodsSpecificationMapper.xml
│ │ ├── DtsGrouponMapper.xml
│ │ ├── DtsGrouponRulesMapper.xml
│ │ ├── DtsIssueMapper.xml
│ │ ├── DtsKeywordMapper.xml
│ │ ├── DtsOrderGoodsMapper.xml
│ │ ├── DtsOrderMapper.xml
│ │ ├── DtsPermissionMapper.xml
│ │ ├── DtsRegionMapper.xml
│ │ ├── DtsRoleMapper.xml
│ │ ├── DtsSearchHistoryMapper.xml
│ │ ├── DtsStorageMapper.xml
│ │ ├── DtsSystemMapper.xml
│ │ ├── DtsTopicMapper.xml
│ │ ├── DtsUserAccountMapper.xml
│ │ ├── DtsUserFormidMapper.xml
│ │ ├── DtsUserMapper.xml
│ │ └── ex
│ │ ├── AccountMapperEx.xml
│ │ ├── GoodsProductMapper.xml
│ │ ├── OrderMapper.xml
│ │ └── StatMapper.xml
│ └── test
│ └── java
│ └── com
│ └── qiguliuxing
│ └── dts
│ └── dao
│ ├── AppTest.java
│ ├── DbConfigTest.java
│ ├── DbTest.java
│ ├── MapperReturnTest.java
│ ├── StatMapperTest.java
│ └── StockTest.java
├── dts-wx-api
├── .gitignore
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── qiguliuxing
│ │ └── dts
│ │ └── wx
│ │ ├── Application.java
│ │ ├── annotation
│ │ ├── LoginUser.java
│ │ └── support
│ │ │ └── LoginUserHandlerMethodArgumentResolver.java
│ │ ├── config
│ │ └── WxWebMvcConfiguration.java
│ │ ├── dao
│ │ ├── BrandCartGoods.java
│ │ ├── BrandOrderGoods.java
│ │ ├── CaptchaItem.java
│ │ ├── CouponVo.java
│ │ ├── UserInfo.java
│ │ ├── UserToken.java
│ │ └── WxLoginInfo.java
│ │ ├── service
│ │ ├── CaptchaCodeManager.java
│ │ ├── GetRegionService.java
│ │ ├── HomeCacheManager.java
│ │ ├── UserInfoService.java
│ │ ├── UserTokenManager.java
│ │ └── WxOrderService.java
│ │ ├── util
│ │ ├── IpUtil.java
│ │ ├── WxResponseCode.java
│ │ └── WxResponseUtil.java
│ │ └── web
│ │ ├── WxAddressController.java
│ │ ├── WxArticleController.java
│ │ ├── WxAuthController.java
│ │ ├── WxBrandController.java
│ │ ├── WxBrokerageController.java
│ │ ├── WxCartController.java
│ │ ├── WxCatalogController.java
│ │ ├── WxCollectController.java
│ │ ├── WxCommentController.java
│ │ ├── WxCouponController.java
│ │ ├── WxFeedbackController.java
│ │ ├── WxFootprintController.java
│ │ ├── WxGoodsController.java
│ │ ├── WxGrouponController.java
│ │ ├── WxHomeController.java
│ │ ├── WxIndexController.java
│ │ ├── WxOrderController.java
│ │ ├── WxRegionController.java
│ │ ├── WxSearchController.java
│ │ ├── WxStorageController.java
│ │ ├── WxTopicController.java
│ │ ├── WxUserController.java
│ │ └── WxUserFormId.java
│ └── resources
│ ├── application.yml
│ └── logback-spring.xml
├── pom.xml
└── wx-mini-program
├── app.js
├── app.json
├── app.wxss
├── config
└── api.js
├── lib
├── coupon-window
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── home
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── share-red-packets
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── wxParse
│ ├── html2json.js
│ ├── htmlparser.js
│ ├── showdown.js
│ ├── wxDiscode.js
│ ├── wxParse.js
│ ├── wxParse.wxml
│ └── wxParse.wxss
└── zanui-weapp
│ └── capsule
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── pages
├── about
│ ├── about.js
│ ├── about.json
│ ├── about.wxml
│ └── about.wxss
├── article
│ ├── article.js
│ ├── article.json
│ ├── article.wxml
│ └── article.wxss
├── auth
│ ├── accountLogin
│ │ ├── accountLogin.js
│ │ ├── accountLogin.json
│ │ ├── accountLogin.wxml
│ │ └── accountLogin.wxss
│ ├── login
│ │ ├── login.js
│ │ ├── login.json
│ │ ├── login.wxml
│ │ └── login.wxss
│ ├── register
│ │ ├── register.js
│ │ ├── register.json
│ │ ├── register.wxml
│ │ └── register.wxss
│ └── reset
│ │ ├── reset.js
│ │ ├── reset.json
│ │ ├── reset.wxml
│ │ └── reset.wxss
├── brand
│ ├── brand.js
│ ├── brand.json
│ ├── brand.wxml
│ └── brand.wxss
├── brandDetail
│ ├── brandDetail.js
│ ├── brandDetail.json
│ ├── brandDetail.wxml
│ └── brandDetail.wxss
├── brokerage
│ ├── main
│ │ ├── main.js
│ │ ├── main.json
│ │ ├── main.wxml
│ │ └── main.wxss
│ ├── order
│ │ ├── order.js
│ │ ├── order.json
│ │ ├── order.wxml
│ │ └── order.wxss
│ ├── record
│ │ ├── record.js
│ │ ├── record.json
│ │ ├── record.wxml
│ │ └── record.wxss
│ └── withdrawal
│ │ ├── withdrawal.js
│ │ ├── withdrawal.json
│ │ ├── withdrawal.wxml
│ │ └── withdrawal.wxss
├── cart
│ ├── cart.js
│ ├── cart.json
│ ├── cart.wxml
│ └── cart.wxss
├── catalog
│ ├── catalog.js
│ ├── catalog.json
│ ├── catalog.wxml
│ └── catalog.wxss
├── category
│ ├── category.js
│ ├── category.json
│ ├── category.wxml
│ └── category.wxss
├── checkout
│ ├── checkout.js
│ ├── checkout.json
│ ├── checkout.wxml
│ └── checkout.wxss
├── comment
│ ├── comment.js
│ ├── comment.json
│ ├── comment.wxml
│ └── comment.wxss
├── commentPost
│ ├── commentPost.js
│ ├── commentPost.json
│ ├── commentPost.wxml
│ └── commentPost.wxss
├── coupon
│ ├── coupon.js
│ ├── coupon.json
│ ├── coupon.wxml
│ └── coupon.wxss
├── goods
│ ├── goods.js
│ ├── goods.json
│ ├── goods.wxml
│ └── goods.wxss
├── groupon
│ ├── grouponDetail
│ │ ├── grouponDetail.js
│ │ ├── grouponDetail.json
│ │ ├── grouponDetail.wxml
│ │ └── grouponDetail.wxss
│ ├── grouponList
│ │ ├── grouponList.js
│ │ ├── grouponList.json
│ │ ├── grouponList.wxml
│ │ └── grouponList.wxss
│ └── myGroupon
│ │ ├── myGroupon.js
│ │ ├── myGroupon.json
│ │ ├── myGroupon.wxml
│ │ └── myGroupon.wxss
├── hotGoods
│ ├── hotGoods.js
│ ├── hotGoods.json
│ ├── hotGoods.wxml
│ └── hotGoods.wxss
├── index
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
├── logs
│ ├── logs.js
│ ├── logs.json
│ ├── logs.wxml
│ └── logs.wxss
├── newGoods
│ ├── newGoods.js
│ ├── newGoods.json
│ ├── newGoods.wxml
│ └── newGoods.wxss
├── payResult
│ ├── payResult.js
│ ├── payResult.json
│ ├── payResult.wxml
│ └── payResult.wxss
├── search
│ ├── search.js
│ ├── search.json
│ ├── search.wxml
│ └── search.wxss
├── topic
│ ├── topic.js
│ ├── topic.json
│ ├── topic.wxml
│ └── topic.wxss
├── topicComment
│ ├── topicComment.js
│ ├── topicComment.json
│ ├── topicComment.wxml
│ └── topicComment.wxss
├── topicCommentPost
│ ├── topicCommentPost.js
│ ├── topicCommentPost.json
│ ├── topicCommentPost.wxml
│ └── topicCommentPost.wxss
├── topicDetail
│ ├── topicDetail.js
│ ├── topicDetail.json
│ ├── topicDetail.wxml
│ └── topicDetail.wxss
└── ucenter
│ ├── address
│ ├── address.js
│ ├── address.json
│ ├── address.wxml
│ └── address.wxss
│ ├── addressAdd
│ ├── addressAdd.js
│ ├── addressAdd.json
│ ├── addressAdd.wxml
│ └── addressAdd.wxss
│ ├── collect
│ ├── collect.js
│ ├── collect.json
│ ├── collect.wxml
│ └── collect.wxss
│ ├── couponList
│ ├── couponList.js
│ ├── couponList.json
│ ├── couponList.wxml
│ └── couponList.wxss
│ ├── couponSelect
│ ├── couponSelect.js
│ ├── couponSelect.json
│ ├── couponSelect.wxml
│ └── couponSelect.wxss
│ ├── expressInfo
│ ├── expressInfo.js
│ ├── expressInfo.json
│ ├── expressInfo.wxml
│ └── expressInfo.wxss
│ ├── feedback
│ ├── feedback.js
│ ├── feedback.json
│ ├── feedback.wxml
│ └── feedback.wxss
│ ├── footprint
│ ├── footprint.js
│ ├── footprint.json
│ ├── footprint.wxml
│ └── footprint.wxss
│ ├── index
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
│ ├── main
│ ├── index.js
│ ├── index.json
│ ├── index.wxml
│ └── index.wxss
│ ├── order
│ ├── order.js
│ ├── order.json
│ ├── order.wxml
│ └── order.wxss
│ ├── orderDetail
│ ├── orderDetail.js
│ ├── orderDetail.json
│ ├── orderDetail.wxml
│ └── orderDetail.wxss
│ └── user
│ ├── user.js
│ ├── user.json
│ ├── user.wxml
│ └── user.wxss
├── project.config.json
├── sitemap.json
├── static
├── css
│ ├── animate.wxss
│ ├── guildford.wxss
│ └── style.wxss
├── font
│ └── iconfont.wxss
└── images
│ ├── about.png
│ ├── about_us.png
│ ├── address-bg-bd.png
│ ├── address.png
│ ├── address_right.png
│ ├── avatar.png
│ ├── cart.png
│ ├── cart@selected.png
│ ├── category.png
│ ├── category@selected.png
│ ├── channel_category.png
│ ├── checkbox.png
│ ├── clear_input.png
│ ├── close.gif
│ ├── comment.png
│ ├── complete.png
│ ├── coupon.png
│ ├── customer.png
│ ├── del-address.png
│ ├── detail_back.png
│ ├── dfh.png
│ ├── dfk.png
│ ├── down.png
│ ├── dpj.png
│ ├── dsh.png
│ ├── edit-address.png
│ ├── feedback.png
│ ├── footprint.png
│ ├── friend.png
│ ├── go.png
│ ├── group.png
│ ├── home.png
│ ├── home@selected.png
│ ├── ic_menu_shoping_nor.png
│ ├── ic_menu_topic_nor.png
│ ├── ic_menu_topic_pressed.png
│ ├── ico-addr.png
│ ├── icon_close.png
│ ├── icon_collect.png
│ ├── icon_collect_checked.png
│ ├── icon_error.png
│ ├── icon_go_more.png
│ ├── icon_like.png
│ ├── icon_like_checked.png
│ ├── kefu.png
│ ├── mobile.png
│ ├── my.png
│ ├── my@selected.png
│ ├── news.png
│ ├── noAddress.png
│ ├── noCart.png
│ ├── noCart_old.png
│ ├── open.gif
│ ├── selnum.png
│ ├── sh.png
│ ├── share.png
│ ├── telephone.png
│ ├── title_search.png
│ ├── wechat.png
│ └── wxpay.png
└── utils
├── check.js
├── user.js
└── util.js
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea/
2 | /dts-admin-api/dts-admin-api.iml
3 | /dts-core/dts-core.iml
4 | /dts-dao/dts-dao.iml
5 | /dts-wx-api/dts-wx-api.iml
6 | /logs/
7 | /admin-ui/node_modules/
8 |
--------------------------------------------------------------------------------
/admin-ui/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"],
12 | "env": {
13 | "development":{
14 | "plugins": ["dynamic-import-node"]
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/admin-ui/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | end_of_line = lf
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.md]
13 | insert_final_newline = false
14 | trim_trailing_whitespace = false
15 |
--------------------------------------------------------------------------------
/admin-ui/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/admin-ui/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/build/logo.png
--------------------------------------------------------------------------------
/admin-ui/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | module.exports = {
4 | //You can set the vue-loader configuration by yourself.
5 | }
6 |
--------------------------------------------------------------------------------
/admin-ui/config/demo.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"',
3 | ENV_CONFIG: '"dep"',
4 | BASE_API: '"http://localhost:8083/admin"'
5 | }
6 |
--------------------------------------------------------------------------------
/admin-ui/config/dev.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"development"',
3 | ENV_CONFIG: '"dev"',
4 | BASE_API: '"http://localhost:8083/demo/admin"'
5 | }
6 |
--------------------------------------------------------------------------------
/admin-ui/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"',
3 | ENV_CONFIG: '"prod"',
4 | BASE_API: '"https://www.xxx.com/manager"'
5 | }
6 |
--------------------------------------------------------------------------------
/admin-ui/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/favicon.ico
--------------------------------------------------------------------------------
/admin-ui/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 聚惠星管理后台
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/02e4bf11e25fe0f713f7c5b427e59863.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/02e4bf11e25fe0f713f7c5b427e59863.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/09a8e0db3fdbf76304ad9f2278eac133.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/09a8e0db3fdbf76304ad9f2278eac133.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/12348e2135b3ea302313fd0944a6cf3c.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/12348e2135b3ea302313fd0944a6cf3c.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/136c108a20a389dff340a4fd1fc46853.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/136c108a20a389dff340a4fd1fc46853.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/27fd0298291cda834506e6ccc9a32a88.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/27fd0298291cda834506e6ccc9a32a88.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/35e8117ceceb1e168fa80e5bb6787a49.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/35e8117ceceb1e168fa80e5bb6787a49.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/35eb3c121c5d15f751ea53c2a50eee8f.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/35eb3c121c5d15f751ea53c2a50eee8f.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/3885ed1e71102925a958f43185bca8f8.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/3885ed1e71102925a958f43185bca8f8.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/3d8ded884132d95b70ec91cb52029657.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/3d8ded884132d95b70ec91cb52029657.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/3df77ae68fc3d7f65b2e3c1175f1b25f.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/3df77ae68fc3d7f65b2e3c1175f1b25f.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/464cbd3326d998c97a89943d4dcbb6d7.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/464cbd3326d998c97a89943d4dcbb6d7.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/5230467b7a6a325a598b5b86c136da0a.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/5230467b7a6a325a598b5b86c136da0a.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/6356e389603bd0ce9c7f9a505fdf1ef4.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/6356e389603bd0ce9c7f9a505fdf1ef4.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/63edd7d879e47bb5c207f473f8a79cd8.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/63edd7d879e47bb5c207f473f8a79cd8.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/6662242c3df05193175fba1c8feb9c09.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/6662242c3df05193175fba1c8feb9c09.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/71b546e667e5f104c1102a873994acfd.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/71b546e667e5f104c1102a873994acfd.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/73cacfef98ab799ab7b5ae35ec4dffc1.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/73cacfef98ab799ab7b5ae35ec4dffc1.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/752393a5717ae70ce144f00265326bff.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/752393a5717ae70ce144f00265326bff.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/752f86e3ea2b7d3bcace5fdbba6a5d49.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/752f86e3ea2b7d3bcace5fdbba6a5d49.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/77f246fa4fe944808b245ef57bcb25cf.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/77f246fa4fe944808b245ef57bcb25cf.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/784cb26686addf2a372ce7741f410805.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/784cb26686addf2a372ce7741f410805.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/7e001ee36321c77c9a4c23a54a37b84d.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/7e001ee36321c77c9a4c23a54a37b84d.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/80a14c71fc20fe02225b907b4a4b6a9f.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/80a14c71fc20fe02225b907b4a4b6a9f.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/90405bb085405f8b940c6772b7254597.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/90405bb085405f8b940c6772b7254597.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/9204908d46812329fa0ad27559ab5468.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/9204908d46812329fa0ad27559ab5468.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/a55f1b0a8384990f0218d5551963efa0.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/a55f1b0a8384990f0218d5551963efa0.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/adaa5d0bdf64c4ed00538ebf0f7ed3bf.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/adaa5d0bdf64c4ed00538ebf0f7ed3bf.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/b0cd5d7fa9791f6fad190bd3e7d342cb.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/b0cd5d7fa9791f6fad190bd3e7d342cb.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/b18ae66316975f30c0c8f69eaf5172b1.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/b18ae66316975f30c0c8f69eaf5172b1.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/b2c24e5d7257fea2a3359b087546abe9.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/b2c24e5d7257fea2a3359b087546abe9.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/b70f1023cd6f7687b3596a0692a4d989.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/b70f1023cd6f7687b3596a0692a4d989.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/b79c9979c2691bd291f47ba3464f46b3.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/b79c9979c2691bd291f47ba3464f46b3.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/bc49e387347b257157da5fcd780328c7.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/bc49e387347b257157da5fcd780328c7.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/c91148f0c8ef090f898a73f5140ef3ab.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/c91148f0c8ef090f898a73f5140ef3ab.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/ca888dd09575c465b41178e4a6d968ee.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/ca888dd09575c465b41178e4a6d968ee.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/ce246a0191deb8b9d0cb8cd48a8e90af.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/ce246a0191deb8b9d0cb8cd48a8e90af.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/db8812e3ed8607ccbe55addd1c10a99a.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/db8812e3ed8607ccbe55addd1c10a99a.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/ddc871961624e54ed23c3129de1f6707.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/ddc871961624e54ed23c3129de1f6707.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/df4a6d0e2cdcde1bf3c3aac337d7a333.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/df4a6d0e2cdcde1bf3c3aac337d7a333.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/e0852911a3feb0733ebd8bc7ca2e7d4b.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/e0852911a3feb0733ebd8bc7ca2e7d4b.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/e750dc5e5db3e6ed609f58d3370bd895.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/e750dc5e5db3e6ed609f58d3370bd895.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/f2ef171e3350a7b9d2e90bf8c4b385c4.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/f2ef171e3350a7b9d2e90bf8c4b385c4.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/.cache/babel-loader/f91948a99f6add6a54e2bd4b52657a2d.json.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/.umi/.cache/babel-loader/f91948a99f6add6a54e2bd4b52657a2d.json.gz
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/history.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | import { createBrowserHistory, History } from 'D:/zhou/projects/demo/dts-shop/admin-ui/node_modules/@umijs/runtime';
3 |
4 | let options = {
5 | "basename": "/"
6 | };
7 | if ((window).routerBase) {
8 | options.basename = (window).routerBase;
9 | }
10 |
11 | // remove initial history because of ssr
12 | let history: History = process.env.__IS_SERVER ? null : createBrowserHistory(options);
13 | export const createHistory = (hotReload = false) => {
14 | if (!hotReload) {
15 | history = createBrowserHistory(options);
16 | }
17 |
18 | return history;
19 | };
20 |
21 | export { history };
22 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/plugin.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | import { Plugin } from 'D:/zhou/projects/demo/dts-shop/admin-ui/node_modules/@umijs/runtime';
3 |
4 | const plugin = new Plugin({
5 | validKeys: ['modifyClientRenderOpts','patchRoutes','rootContainer','render','onRouteChange',],
6 | });
7 |
8 | export { plugin };
9 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/pluginRegister.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | import { plugin } from './plugin';
3 |
4 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/polyfill.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | import 'core-js';
3 | import 'regenerator-runtime/runtime';
4 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/routes.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | import React from 'react';
3 | import { ApplyPluginsType } from 'D:/zhou/projects/demo/dts-shop/admin-ui/node_modules/@umijs/runtime';
4 | import * as umiExports from './umiExports';
5 | import { plugin } from './plugin';
6 |
7 | export function getRoutes() {
8 | const routes = [];
9 |
10 | // allow user to extend routes
11 | plugin.applyPlugins({
12 | key: 'patchRoutes',
13 | type: ApplyPluginsType.event,
14 | args: { routes },
15 | });
16 |
17 | return routes;
18 | }
19 |
--------------------------------------------------------------------------------
/admin-ui/src/.umi/core/umiExports.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | export { history } from './history';
3 | export { plugin } from './plugin';
4 |
--------------------------------------------------------------------------------
/admin-ui/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/admin-ui/src/api/ad.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listAd(query) {
4 | return request({
5 | url: '/ad/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createAd(data) {
12 | return request({
13 | url: '/ad/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readAd(data) {
20 | return request({
21 | url: '/ad/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateAd(data) {
28 | return request({
29 | url: '/ad/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteAd(data) {
36 | return request({
37 | url: '/ad/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/api/admin.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listAdmin(query) {
4 | return request({
5 | url: '/admin/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createAdmin(data) {
12 | return request({
13 | url: '/admin/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readminAdmin(data) {
20 | return request({
21 | url: '/admin/readmin',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateAdmin(data) {
28 | return request({
29 | url: '/admin/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteAdmin(data) {
36 | return request({
37 | url: '/admin/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/api/article.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listArticle(query) {
4 | return request({
5 | url: '/article/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function deleteArticle(data) {
12 | return request({
13 | url: '/article/delete',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function publishArticle(data) {
20 | return request({
21 | url: '/article/create',
22 | method: 'post',
23 | data
24 | })
25 | }
26 |
27 | export function detailArticle(id) {
28 | return request({
29 | url: '/article/detail',
30 | method: 'get',
31 | params: { id }
32 | })
33 | }
34 |
35 | export function editArticle(data) {
36 | return request({
37 | url: '/article/update',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/admin-ui/src/api/brand.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listBrand(query) {
4 | return request({
5 | url: '/brand/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createBrand(data) {
12 | return request({
13 | url: '/brand/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readBrand(data) {
20 | return request({
21 | url: '/brand/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateBrand(data) {
28 | return request({
29 | url: '/brand/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteBrand(data) {
36 | return request({
37 | url: '/brand/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
43 | export function listCatAndAdmin() {
44 | return request({
45 | url: '/brand/catAndAdmin',
46 | method: 'get'
47 | })
48 | }
49 |
--------------------------------------------------------------------------------
/admin-ui/src/api/category.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listCategory(query) {
4 | return request({
5 | url: '/category/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function listCatL1() {
12 | return request({
13 | url: '/category/l1',
14 | method: 'get'
15 | })
16 | }
17 |
18 | export function createCategory(data) {
19 | return request({
20 | url: '/category/create',
21 | method: 'post',
22 | data
23 | })
24 | }
25 |
26 | export function readCategory(data) {
27 | return request({
28 | url: '/category/read',
29 | method: 'get',
30 | data
31 | })
32 | }
33 |
34 | export function updateCategory(data) {
35 | return request({
36 | url: '/category/update',
37 | method: 'post',
38 | data
39 | })
40 | }
41 |
42 | export function deleteCategory(data) {
43 | return request({
44 | url: '/category/delete',
45 | method: 'post',
46 | data
47 | })
48 | }
49 |
--------------------------------------------------------------------------------
/admin-ui/src/api/comment.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listComment(query) {
4 | return request({
5 | url: '/comment/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function deleteComment(data) {
12 | return request({
13 | url: '/comment/delete',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
--------------------------------------------------------------------------------
/admin-ui/src/api/coupon.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listCoupon(query) {
4 | return request({
5 | url: '/coupon/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createCoupon(data) {
12 | return request({
13 | url: '/coupon/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readCoupon(id) {
20 | return request({
21 | url: '/coupon/read',
22 | method: 'get',
23 | params: { id }
24 | })
25 | }
26 |
27 | export function updateCoupon(data) {
28 | return request({
29 | url: '/coupon/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteCoupon(data) {
36 | return request({
37 | url: '/coupon/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
43 | export function listCouponUser(query) {
44 | return request({
45 | url: '/coupon/listuser',
46 | method: 'get',
47 | params: query
48 | })
49 | }
50 |
--------------------------------------------------------------------------------
/admin-ui/src/api/dashboard.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function info(query) {
4 | return request({
5 | url: '/dashboard',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
--------------------------------------------------------------------------------
/admin-ui/src/api/goods.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listGoods(query) {
4 | return request({
5 | url: '/goods/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function deleteGoods(data) {
12 | return request({
13 | url: '/goods/delete',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function publishGoods(data) {
20 | return request({
21 | url: '/goods/create',
22 | method: 'post',
23 | data
24 | })
25 | }
26 |
27 | export function detailGoods(id) {
28 | return request({
29 | url: '/goods/detail',
30 | method: 'get',
31 | params: { id }
32 | })
33 | }
34 |
35 | export function editGoods(data) {
36 | return request({
37 | url: '/goods/update',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
43 | export function listCatAndBrand() {
44 | return request({
45 | url: '/goods/catAndBrand',
46 | method: 'get'
47 | })
48 | }
49 |
--------------------------------------------------------------------------------
/admin-ui/src/api/groupon.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listRecord(query) {
4 | return request({
5 | url: '/groupon/listRecord',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function listGroupon(query) {
12 | return request({
13 | url: '/groupon/list',
14 | method: 'get',
15 | params: query
16 | })
17 | }
18 |
19 | export function deleteGroupon(data) {
20 | return request({
21 | url: '/groupon/delete',
22 | method: 'post',
23 | data
24 | })
25 | }
26 |
27 | export function publishGroupon(data) {
28 | return request({
29 | url: '/groupon/create',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function editGroupon(data) {
36 | return request({
37 | url: '/groupon/update',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/api/issue.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listIssue(query) {
4 | return request({
5 | url: '/issue/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createIssue(data) {
12 | return request({
13 | url: '/issue/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readIssue(data) {
20 | return request({
21 | url: '/issue/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateIssue(data) {
28 | return request({
29 | url: '/issue/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteIssue(data) {
36 | return request({
37 | url: '/issue/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/api/keyword.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listKeyword(query) {
4 | return request({
5 | url: '/keyword/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createKeyword(data) {
12 | return request({
13 | url: '/keyword/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readKeyword(data) {
20 | return request({
21 | url: '/keyword/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateKeyword(data) {
28 | return request({
29 | url: '/keyword/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteKeyword(data) {
36 | return request({
37 | url: '/keyword/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/api/login.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function loginByUsername(username, password) {
4 | const data = {
5 | username,
6 | password
7 | }
8 | return request({
9 | url: '/auth/login',
10 | method: 'post',
11 | data
12 | })
13 | }
14 |
15 | export function logout() {
16 | return request({
17 | url: '/auth/logout',
18 | method: 'post'
19 | })
20 | }
21 |
22 | export function getUserInfo(token) {
23 | return request({
24 | url: '/auth/info',
25 | method: 'get',
26 | params: { token }
27 | })
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/admin-ui/src/api/order.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 | import Qs from 'qs'
3 |
4 | export function listOrder(query) {
5 | return request({
6 | url: '/order/list',
7 | method: 'get',
8 | params: query,
9 | paramsSerializer: function(params) {
10 | return Qs.stringify(params, { arrayFormat: 'repeat' })
11 | }
12 | })
13 | }
14 |
15 | export function detailOrder(id) {
16 | return request({
17 | url: '/order/detail',
18 | method: 'get',
19 | params: { id }
20 | })
21 | }
22 |
23 | export function shipOrder(data) {
24 | return request({
25 | url: '/order/ship',
26 | method: 'post',
27 | data
28 | })
29 | }
30 |
31 | export function refundOrder(data) {
32 | return request({
33 | url: '/order/refund',
34 | method: 'post',
35 | data
36 | })
37 | }
38 |
39 | export function replyComment(data) {
40 | return request({
41 | url: '/order/reply',
42 | method: 'post',
43 | data
44 | })
45 | }
46 |
47 | export function listShipChannel() {
48 | return request({
49 | url: '/order/listShipChannel',
50 | method: 'get'
51 | })
52 | }
53 |
--------------------------------------------------------------------------------
/admin-ui/src/api/profile.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function changePassword(data) {
4 | return request({
5 | url: '/profile/password',
6 | method: 'post',
7 | data
8 | })
9 | }
10 |
--------------------------------------------------------------------------------
/admin-ui/src/api/qiniu.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function getToken() {
4 | return request({
5 | url: '/qiniu/upload/token', // 假地址 自行替换
6 | method: 'get'
7 | })
8 | }
9 |
--------------------------------------------------------------------------------
/admin-ui/src/api/region.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listRegion(query) {
4 | return request({
5 | url: '/region/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function listSubRegion(query) {
12 | return request({
13 | url: '/region/clist',
14 | method: 'get',
15 | params: query
16 | })
17 | }
18 |
--------------------------------------------------------------------------------
/admin-ui/src/api/stat.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function statUser(query) {
4 | return request({
5 | url: '/stat/user',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function statOrder(query) {
12 | return request({
13 | url: '/stat/order',
14 | method: 'get',
15 | params: query
16 | })
17 | }
18 |
19 | export function statGoods(query) {
20 | return request({
21 | url: '/stat/goods',
22 | method: 'get',
23 | params: query
24 | })
25 | }
26 |
--------------------------------------------------------------------------------
/admin-ui/src/api/storage.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listStorage(query) {
4 | return request({
5 | url: '/storage/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createStorage(data) {
12 | return request({
13 | url: '/storage/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readStorage(data) {
20 | return request({
21 | url: '/storage/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateStorage(data) {
28 | return request({
29 | url: '/storage/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteStorage(data) {
36 | return request({
37 | url: '/storage/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
43 | const uploadPath = process.env.BASE_API + '/storage/create'
44 | export { uploadPath }
45 |
--------------------------------------------------------------------------------
/admin-ui/src/api/topic.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function listTopic(query) {
4 | return request({
5 | url: '/topic/list',
6 | method: 'get',
7 | params: query
8 | })
9 | }
10 |
11 | export function createTopic(data) {
12 | return request({
13 | url: '/topic/create',
14 | method: 'post',
15 | data
16 | })
17 | }
18 |
19 | export function readTopic(data) {
20 | return request({
21 | url: '/topic/read',
22 | method: 'get',
23 | data
24 | })
25 | }
26 |
27 | export function updateTopic(data) {
28 | return request({
29 | url: '/topic/update',
30 | method: 'post',
31 | data
32 | })
33 | }
34 |
35 | export function deleteTopic(data) {
36 | return request({
37 | url: '/topic/delete',
38 | method: 'post',
39 | data
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/assets/401_images/401.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/assets/401_images/401.gif
--------------------------------------------------------------------------------
/admin-ui/src/assets/404_images/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/assets/404_images/404.png
--------------------------------------------------------------------------------
/admin-ui/src/assets/404_images/404_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/assets/404_images/404_cloud.png
--------------------------------------------------------------------------------
/admin-ui/src/assets/custom-theme/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/assets/custom-theme/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/admin-ui/src/assets/custom-theme/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/src/assets/custom-theme/fonts/element-icons.woff
--------------------------------------------------------------------------------
/admin-ui/src/components/LangSelect/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 中文
8 | English
9 |
10 |
11 |
12 |
13 |
32 |
33 |
40 |
41 |
--------------------------------------------------------------------------------
/admin-ui/src/components/SvgIcon/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
34 |
35 |
44 |
--------------------------------------------------------------------------------
/admin-ui/src/directive/clipboard/index.js:
--------------------------------------------------------------------------------
1 | import Clipboard from './clipboard'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('Clipboard', Clipboard)
5 | }
6 |
7 | if (window.Vue) {
8 | window.clipboard = Clipboard
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | Clipboard.install = install
13 | export default Clipboard
14 |
--------------------------------------------------------------------------------
/admin-ui/src/directive/permission/index.js:
--------------------------------------------------------------------------------
1 | import permission from './permission'
2 |
3 | const install = function(Vue) {
4 | Vue.directive('permission', permission)
5 | }
6 |
7 | if (window.Vue) {
8 | window['permission'] = permission
9 | Vue.use(install); // eslint-disable-line
10 | }
11 |
12 | permission.install = install
13 | export default permission
14 |
--------------------------------------------------------------------------------
/admin-ui/src/directive/permission/permission.js:
--------------------------------------------------------------------------------
1 |
2 | import store from '@/store'
3 |
4 | export default{
5 | inserted(el, binding, vnode) {
6 | const { value } = binding
7 | const perms = store.getters && store.getters.perms
8 |
9 | if (value && value instanceof Array && value.length > 0) {
10 | const permissions = value
11 |
12 | var hasPermission = false
13 |
14 | if (perms.indexOf('*') >= 0) {
15 | hasPermission = true
16 | } else {
17 | hasPermission = perms.some(perm => {
18 | return permissions.includes(perm)
19 | })
20 | }
21 |
22 | if (!hasPermission) {
23 | el.parentNode && el.parentNode.removeChild(el)
24 | }
25 | } else {
26 | throw new Error(`need perms! Like v-permission="['GET /aaa','POST /bbb']"`)
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import SvgIcon from '@/components/SvgIcon'// svg组件
3 |
4 | // register globally
5 | Vue.component('svg-icon', SvgIcon)
6 |
7 | const req = require.context('./svg', false, /\.svg$/)
8 | const requireAll = requireContext => requireContext.keys().map(requireContext)
9 | requireAll(req)
10 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/clipboard.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/component.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/edit.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/example.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/excel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/eye.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/guide 2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/guide.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/international.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/language.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/list.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/message.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/nested.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/people.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/peoples.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/size.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/theme.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svg/wechat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/admin-ui/src/icons/svgo.yml:
--------------------------------------------------------------------------------
1 | # replace default config
2 |
3 | # multipass: true
4 | # full: true
5 |
6 | plugins:
7 |
8 | # - name
9 | #
10 | # or:
11 | # - name: false
12 | # - name: true
13 | #
14 | # or:
15 | # - name:
16 | # param1: 1
17 | # param2: 2
18 |
19 | - removeAttrs:
20 | attrs:
21 | - 'fill'
22 | - 'fill-rule'
23 |
--------------------------------------------------------------------------------
/admin-ui/src/lang/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueI18n from 'vue-i18n'
3 | import Cookies from 'js-cookie'
4 | import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
5 | import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
6 | import enLocale from './en'
7 | import zhLocale from './zh'
8 |
9 | Vue.use(VueI18n)
10 |
11 | const messages = {
12 | en: {
13 | ...enLocale,
14 | ...elementEnLocale
15 | },
16 | zh: {
17 | ...zhLocale,
18 | ...elementZhLocale
19 | }
20 | }
21 |
22 | const i18n = new VueI18n({
23 | // set locale
24 | // options: en | zh
25 | locale: Cookies.get('language') || 'zh',
26 | // set locale messages
27 | messages
28 | })
29 |
30 | export default i18n
31 |
--------------------------------------------------------------------------------
/admin-ui/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | import Cookies from 'js-cookie'
4 |
5 | import 'normalize.css/normalize.css' // A modern alternative to CSS resets
6 |
7 | import Element from 'element-ui'
8 | import 'element-ui/lib/theme-chalk/index.css'
9 |
10 | import '@/styles/index.scss' // global css
11 |
12 | import App from './App'
13 | import router from './router'
14 | import store from './store'
15 |
16 | import i18n from './lang' // Internationalization
17 | import './icons' // icon
18 | import './permission' // permission control
19 |
20 | import * as filters from './filters' // global filters
21 |
22 | import permission from '@/directive/permission/index.js' // 权限判断指令
23 |
24 | Vue.use(Element, {
25 | size: Cookies.get('size') || 'medium', // set element-ui default size
26 | i18n: (key, value) => i18n.t(key, value)
27 | })
28 |
29 | Vue.directive('permission', permission)
30 |
31 | // register global utility filters.
32 | Object.keys(filters).forEach(key => {
33 | Vue.filter(key, filters[key])
34 | })
35 |
36 | Vue.config.productionTip = false
37 |
38 | new Vue({
39 | el: '#app',
40 | router,
41 | store,
42 | i18n,
43 | render: h => h(App)
44 | })
45 |
--------------------------------------------------------------------------------
/admin-ui/src/store/getters.js:
--------------------------------------------------------------------------------
1 | const getters = {
2 | sidebar: state => state.app.sidebar,
3 | language: state => state.app.language,
4 | size: state => state.app.size,
5 | device: state => state.app.device,
6 | visitedViews: state => state.tagsView.visitedViews,
7 | cachedViews: state => state.tagsView.cachedViews,
8 | token: state => state.user.token,
9 | avatar: state => state.user.avatar,
10 | name: state => state.user.name,
11 | introduction: state => state.user.introduction,
12 | status: state => state.user.status,
13 | roles: state => state.user.roles,
14 | perms: state => state.user.perms,
15 | setting: state => state.user.setting,
16 | permission_routers: state => state.permission.routers,
17 | addRouters: state => state.permission.addRouters
18 | }
19 | export default getters
20 |
--------------------------------------------------------------------------------
/admin-ui/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import app from './modules/app'
4 | import permission from './modules/permission'
5 | import tagsView from './modules/tagsView'
6 | import user from './modules/user'
7 | import getters from './getters'
8 |
9 | Vue.use(Vuex)
10 |
11 | const store = new Vuex.Store({
12 | modules: {
13 | app,
14 | permission,
15 | tagsView,
16 | user
17 | },
18 | getters
19 | })
20 |
21 | export default store
22 |
--------------------------------------------------------------------------------
/admin-ui/src/styles/transition.scss:
--------------------------------------------------------------------------------
1 | //globl transition css
2 |
3 | /*fade*/
4 | .fade-enter-active,
5 | .fade-leave-active {
6 | transition: opacity 0.28s;
7 | }
8 |
9 | .fade-enter,
10 | .fade-leave-active {
11 | opacity: 0;
12 | }
13 |
14 | /*fade-transform*/
15 | .fade-transform-leave-active,
16 | .fade-transform-enter-active {
17 | transition: all .5s;
18 | }
19 | .fade-transform-enter {
20 | opacity: 0;
21 | transform: translateX(-30px);
22 | }
23 | .fade-transform-leave-to {
24 | opacity: 0;
25 | transform: translateX(30px);
26 | }
27 |
28 | /*breadcrumb transition*/
29 | .breadcrumb-enter-active,
30 | .breadcrumb-leave-active {
31 | transition: all .5s;
32 | }
33 |
34 | .breadcrumb-enter,
35 | .breadcrumb-leave-active {
36 | opacity: 0;
37 | transform: translateX(20px);
38 | }
39 |
40 | .breadcrumb-move {
41 | transition: all .5s;
42 | }
43 |
44 | .breadcrumb-leave-active {
45 | position: absolute;
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/admin-ui/src/styles/variables.scss:
--------------------------------------------------------------------------------
1 | $blue:#324157;
2 | $light-blue:#3A71A8;
3 | $red:#C03639;
4 | $pink: #E65D6E;
5 | $green: #30B08F;
6 | $tiffany: #4AB7BD;
7 | $yellow:#FEC171;
8 | $panGreen: #30B08F;
9 |
10 | //sidebar
11 | $menuBg:#304156;
12 | $subMenuBg:#1f2d3d;
13 | $menuHover:#001528;
14 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/auth.js:
--------------------------------------------------------------------------------
1 | import Cookies from 'js-cookie'
2 |
3 | const TokenKey = 'X-Dts-Admin-Token'
4 |
5 | export function getToken() {
6 | return Cookies.get(TokenKey)
7 | }
8 |
9 | export function setToken(token) {
10 | return Cookies.set(TokenKey, token)
11 | }
12 |
13 | export function removeToken() {
14 | return Cookies.remove(TokenKey)
15 | }
16 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/clipboard.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Clipboard from 'clipboard'
3 |
4 | function clipboardSuccess() {
5 | Vue.prototype.$message({
6 | message: 'Copy successfully',
7 | type: 'success',
8 | duration: 1500
9 | })
10 | }
11 |
12 | function clipboardError() {
13 | Vue.prototype.$message({
14 | message: 'Copy failed',
15 | type: 'error'
16 | })
17 | }
18 |
19 | export default function handleClipboard(text, event) {
20 | const clipboard = new Clipboard(event.target, {
21 | text: () => text
22 | })
23 | clipboard.on('success', () => {
24 | clipboardSuccess()
25 | clipboard.off('error')
26 | clipboard.off('success')
27 | clipboard.destroy()
28 | })
29 | clipboard.on('error', () => {
30 | clipboardError()
31 | clipboard.off('error')
32 | clipboard.off('success')
33 | clipboard.destroy()
34 | })
35 | clipboard.onClick(event)
36 | }
37 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/createUniqueString.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by jiachenpan on 17/3/8.
3 | */
4 | export default function createUniqueString() {
5 | const timestamp = +new Date() + ''
6 | const randomNum = parseInt((1 + Math.random()) * 65536) + ''
7 | return (+(randomNum + timestamp)).toString(32)
8 | }
9 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/i18n.js:
--------------------------------------------------------------------------------
1 | // translate router.meta.title, be used in breadcrumb sidebar tagsview
2 | export function generateTitle(title) {
3 | const hasKey = this.$te('route.' + title)
4 |
5 | if (hasKey) {
6 | // $t :this method from vue-i18n, inject in @/lang/index.js
7 | const translatedTitle = this.$t('route.' + title)
8 |
9 | return translatedTitle
10 | }
11 | return title
12 | }
13 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/openWindow.js:
--------------------------------------------------------------------------------
1 | /**
2 | *Created by jiachenpan on 16/11/29.
3 | * @param {Sting} url
4 | * @param {Sting} title
5 | * @param {Number} w
6 | * @param {Number} h
7 | */
8 |
9 | export default function openWindow(url, title, w, h) {
10 | // Fixes dual-screen position Most browsers Firefox
11 | const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
12 | const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top
13 |
14 | const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width
15 | const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height
16 |
17 | const left = ((width / 2) - (w / 2)) + dualScreenLeft
18 | const top = ((height / 2) - (h / 2)) + dualScreenTop
19 | const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left)
20 |
21 | // Puts focus on the newWindow
22 | if (window.focus) {
23 | newWindow.focus()
24 | }
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/admin-ui/src/utils/permission.js:
--------------------------------------------------------------------------------
1 | import store from '@/store'
2 |
3 | /**
4 | * @param {Array} value
5 | * @returns {Boolean}
6 | * @example see @/views/permission/directive.vue
7 | */
8 | export default function checkPermission(value) {
9 | if (value && value instanceof Array && value.length > 0) {
10 | const perms = store.getters && store.getters.perms
11 | const permissions = value
12 |
13 | var hasPermission = false
14 |
15 | if (perms.indexOf('*') >= 0) {
16 | hasPermission = true
17 | } else {
18 | hasPermission = perms.some(perm => {
19 | return permissions.includes(perm)
20 | })
21 | }
22 |
23 | if (!hasPermission) {
24 | return false
25 | }
26 | return true
27 | } else {
28 | console.error(`need perms! Like v-permission="['GET /aaa','POST /bbb']"`)
29 | return false
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/admin-ui/src/vendor/Export2Zip.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('script-loader!file-saver');
3 | import JSZip from 'jszip'
4 |
5 | export function export_txt_to_zip(th, jsonData, txtName, zipName) {
6 | const zip = new JSZip()
7 | const txt_name = txtName || 'file'
8 | const zip_name = zipName || 'file'
9 | const data = jsonData
10 | let txtData = `${th}\r\n`
11 | data.forEach((row) => {
12 | let tempStr = ''
13 | tempStr = row.toString()
14 | txtData += `${tempStr}\r\n`
15 | })
16 | zip.file(`${txt_name}.txt`, txtData)
17 | zip.generateAsync({
18 | type: "blob"
19 | }).then((blob) => {
20 | saveAs(blob, `${zip_name}.zip`)
21 | }, (err) => {
22 | alert('导出失败')
23 | })
24 | }
25 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/AppMain.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
24 |
25 |
34 |
35 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/Sidebar/FixiOSBug.js:
--------------------------------------------------------------------------------
1 | export default {
2 | computed: {
3 | device() {
4 | return this.$store.state.app.device
5 | }
6 | },
7 | mounted() {
8 | // In order to fix the click on menu on the ios device will trigger the mouseeleave bug
9 | // https://github.com/PanJiaChen/vue-element-admin/issues/1135
10 | this.fixBugIniOS()
11 | },
12 | methods: {
13 | fixBugIniOS() {
14 | const $submenu = this.$refs.submenu
15 | if ($submenu) {
16 | const handleMouseleave = $submenu.handleMouseleave
17 | $submenu.handleMouseleave = (e) => {
18 | if (this.device === 'mobile') {
19 | return
20 | }
21 | handleMouseleave(e)
22 | }
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/Sidebar/Item.vue:
--------------------------------------------------------------------------------
1 |
30 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/Sidebar/Link.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
40 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/Sidebar/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
14 |
15 |
16 |
17 |
34 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/components/index.js:
--------------------------------------------------------------------------------
1 | export { default as Navbar } from './Navbar'
2 | export { default as Sidebar } from './Sidebar/index.vue'
3 | export { default as TagsView } from './TagsView'
4 | export { default as AppMain } from './AppMain'
5 |
--------------------------------------------------------------------------------
/admin-ui/src/views/layout/mixin/ResizeHandler.js:
--------------------------------------------------------------------------------
1 | import store from '@/store'
2 |
3 | const { body } = document
4 | const WIDTH = 1024
5 | const RATIO = 3
6 |
7 | export default {
8 | watch: {
9 | $route(route) {
10 | if (this.device === 'mobile' && this.sidebar.opened) {
11 | store.dispatch('closeSideBar', { withoutAnimation: false })
12 | }
13 | }
14 | },
15 | beforeMount() {
16 | window.addEventListener('resize', this.resizeHandler)
17 | },
18 | mounted() {
19 | const isMobile = this.isMobile()
20 | if (isMobile) {
21 | store.dispatch('toggleDevice', 'mobile')
22 | store.dispatch('closeSideBar', { withoutAnimation: true })
23 | }
24 | },
25 | methods: {
26 | isMobile() {
27 | const rect = body.getBoundingClientRect()
28 | return rect.width - RATIO < WIDTH
29 | },
30 | resizeHandler() {
31 | if (!document.hidden) {
32 | const isMobile = this.isMobile()
33 | store.dispatch('toggleDevice', isMobile ? 'mobile' : 'desktop')
34 |
35 | if (isMobile) {
36 | store.dispatch('closeSideBar', { withoutAnimation: true })
37 | }
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/admin-ui/src/views/login/authredirect.vue:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/admin-ui/src/views/redirect/index.vue:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/admin-ui/src/views/stat/goods.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
38 |
--------------------------------------------------------------------------------
/admin-ui/src/views/stat/order.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
38 |
--------------------------------------------------------------------------------
/admin-ui/src/views/stat/user.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
39 |
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-cool.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-cry.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-embarassed.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-foot-in-mouth.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-frown.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-innocent.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-kiss.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-laughing.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-money-mouth.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-sealed.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-smile.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-surprised.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-tongue-out.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-undecided.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-wink.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/plugins/emoticons/img/smiley-yell.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-mobile.woff
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.eot
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.ttf
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce-small.woff
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.eot
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.ttf
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/fonts/tinymce.woff
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/img/anchor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/img/anchor.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/img/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/img/loader.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/img/object.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/img/object.gif
--------------------------------------------------------------------------------
/admin-ui/static/tinymce4.7.5/skins/lightgray/img/trans.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/admin-ui/static/tinymce4.7.5/skins/lightgray/img/trans.gif
--------------------------------------------------------------------------------
/doc/dts-shop模型域.ndm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhou-github-name/dts-shop/6643ddde157df7c1092c82be9b8c73d9ebfd58d7/doc/dts-shop模型域.ndm
--------------------------------------------------------------------------------
/dts-admin-api/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | /storage/
3 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/annotation/RequiresPermissionsDesc.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target({ ElementType.TYPE, ElementType.METHOD })
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface RequiresPermissionsDesc {
11 | String[] menu();
12 |
13 | String button();
14 | }
15 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/api/Application.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.api;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.scheduling.annotation.EnableScheduling;
7 | import org.springframework.transaction.annotation.EnableTransactionManagement;
8 |
9 | /**
10 | * @author DELL
11 | */
12 | @SpringBootApplication(scanBasePackages = { "com.qiguliuxing.dts.db", "com.qiguliuxing.dts.core",
13 | "com.qiguliuxing.dts.admin" })
14 | @MapperScan({ "com.qiguliuxing.dts.db.dao", "com.qiguliuxing.dts.db.dao.ex" })
15 | @EnableTransactionManagement
16 | @EnableScheduling
17 | public class Application {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(Application.class, args);
21 | }
22 |
23 | }
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/config/ShiroExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.config;
2 |
3 | import org.apache.shiro.authc.AuthenticationException;
4 | import org.apache.shiro.authz.AuthorizationException;
5 | import org.springframework.core.Ordered;
6 | import org.springframework.core.annotation.Order;
7 | import org.springframework.web.bind.annotation.ControllerAdvice;
8 | import org.springframework.web.bind.annotation.ExceptionHandler;
9 | import org.springframework.web.bind.annotation.ResponseBody;
10 |
11 | import com.qiguliuxing.dts.core.util.ResponseUtil;
12 |
13 | @ControllerAdvice
14 | @Order(value = Ordered.HIGHEST_PRECEDENCE)
15 | public class ShiroExceptionHandler {
16 |
17 | @ExceptionHandler(AuthenticationException.class)
18 | @ResponseBody
19 | public Object unauthenticatedHandler(AuthenticationException e) {
20 | e.printStackTrace();
21 | return ResponseUtil.unlogin();
22 | }
23 |
24 | @ExceptionHandler(AuthorizationException.class)
25 | @ResponseBody
26 | public Object unauthorizedHandler(AuthorizationException e) {
27 | e.printStackTrace();
28 | return ResponseUtil.unauthz();
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/AccountVo.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.dao;
2 |
3 | import java.io.Serializable;
4 | import java.math.BigDecimal;
5 |
6 | public class AccountVo implements Serializable {
7 |
8 | private static final long serialVersionUID = 1567048369574496965L;
9 |
10 | private Integer userId;
11 |
12 | private BigDecimal remainAmount;
13 |
14 | private BigDecimal totalAmount;
15 |
16 | public Integer getUserId() {
17 | return userId;
18 | }
19 |
20 | public void setUserId(Integer userId) {
21 | this.userId = userId;
22 | }
23 |
24 | public BigDecimal getRemainAmount() {
25 | return remainAmount;
26 | }
27 |
28 | public void setRemainAmount(BigDecimal remainAmount) {
29 | this.remainAmount = remainAmount;
30 | }
31 |
32 | public BigDecimal getTotalAmount() {
33 | return totalAmount;
34 | }
35 |
36 | public void setTotalAmount(BigDecimal totalAmount) {
37 | this.totalAmount = totalAmount;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/Product.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.dao;
2 |
3 | import java.math.BigDecimal;
4 |
5 | public class Product {
6 | String[] specifications;
7 | BigDecimal price;
8 | Integer number;
9 | String url;
10 |
11 | public String[] getSpecifications() {
12 | return specifications;
13 | }
14 |
15 | public void setSpecifications(String[] specifications) {
16 | this.specifications = specifications;
17 | }
18 |
19 | public BigDecimal getPrice() {
20 | return price;
21 | }
22 |
23 | public void setPrice(BigDecimal price) {
24 | this.price = price;
25 | }
26 |
27 | public Integer getNumber() {
28 | return number;
29 | }
30 |
31 | public void setNumber(Integer number) {
32 | this.number = number;
33 | }
34 |
35 | public String getUrl() {
36 | return url;
37 | }
38 |
39 | public void setUrl(String url) {
40 | this.url = url;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AdminResponseUtil.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import com.qiguliuxing.dts.core.util.ResponseUtil;
4 |
5 | /**
6 | * 管理后台接口枚举信息的响应
7 | *
8 | * @author CHENBO
9 | * @since 1.0.0
10 | * @QQ 623659388
11 | */
12 | public class AdminResponseUtil extends ResponseUtil {
13 |
14 | /**
15 | * 按枚举返回错误响应结果
16 | *
17 | * @param orderUnknown
18 | * @return
19 | */
20 | public static Object fail(AdminResponseCode responseCode) {
21 | return fail(responseCode.code(), responseCode.desc());
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/ArticleType.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import org.apache.commons.lang3.StringUtils;
4 |
5 | /**
6 | * 公告,通知文章等类型定义
7 | *
8 | * @author CHENBO
9 | * @since 1.0.0
10 | * @QQ 623659388
11 | *
12 | */
13 | public enum ArticleType {
14 |
15 | NOTICE("0", "通知"), ANNOUNCE("1", "公告");
16 |
17 | private final String type;
18 | private final String desc;
19 |
20 | ArticleType(String type, String desc) {
21 | this.type = type;
22 | this.desc = desc;
23 | }
24 |
25 | public static ArticleType getInstance(String type) {
26 | if (StringUtils.isNotBlank(type)) {
27 | for (ArticleType tmp : ArticleType.values()) {
28 | if (type.equals(tmp.type)) {
29 | return tmp;
30 | }
31 | }
32 | }
33 | return null;
34 | }
35 |
36 | public String type() {
37 | return type;
38 | }
39 |
40 | public String desc() {
41 | return desc;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/CatVo.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import java.util.List;
4 |
5 | @SuppressWarnings("rawtypes")
6 | public class CatVo {
7 | private Integer value = null;
8 | private String label = null;
9 | private List children = null;
10 |
11 | public Integer getValue() {
12 | return value;
13 | }
14 |
15 | public void setValue(Integer value) {
16 | this.value = value;
17 | }
18 |
19 | public String getLabel() {
20 | return label;
21 | }
22 |
23 | public void setLabel(String label) {
24 | this.label = label;
25 | }
26 |
27 | public List getChildren() {
28 | return children;
29 | }
30 |
31 | public void setChildren(List children) {
32 | this.children = children;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/DtsBrandVo.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import java.io.Serializable;
4 |
5 | import com.qiguliuxing.dts.db.domain.DtsBrand;
6 |
7 | public class DtsBrandVo extends DtsBrand implements Serializable{
8 |
9 | private static final long serialVersionUID = 6530090986580196500L;
10 |
11 | private Integer[] categoryIds;
12 |
13 | public Integer[] getCategoryIds() {
14 | return categoryIds;
15 | }
16 |
17 | public void setCategoryIds(Integer[] categoryIds) {
18 | this.categoryIds = categoryIds;
19 | }
20 |
21 |
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/PermVo.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import java.util.List;
4 |
5 | public class PermVo {
6 | private String id;
7 | private String label;
8 | private String api;
9 | private List children;
10 |
11 | public String getId() {
12 | return id;
13 | }
14 |
15 | public void setId(String id) {
16 | this.id = id;
17 | }
18 |
19 | public String getLabel() {
20 | return label;
21 | }
22 |
23 | public void setLabel(String label) {
24 | this.label = label;
25 | }
26 |
27 | public void setApi(String api) {
28 | this.api = api;
29 | }
30 |
31 | public String getApi() {
32 | return api;
33 | }
34 |
35 | public List getChildren() {
36 | return children;
37 | }
38 |
39 | public void setChildren(List children) {
40 | this.children = children;
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/Permission.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import org.apache.shiro.authz.annotation.RequiresPermissions;
4 |
5 | import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc;
6 |
7 | public class Permission {
8 | private RequiresPermissions requiresPermissions;
9 | private RequiresPermissionsDesc requiresPermissionsDesc;
10 | private String api;
11 |
12 | public RequiresPermissions getRequiresPermissions() {
13 | return requiresPermissions;
14 | }
15 |
16 | public RequiresPermissionsDesc getRequiresPermissionsDesc() {
17 | return requiresPermissionsDesc;
18 | }
19 |
20 | public void setRequiresPermissions(RequiresPermissions requiresPermissions) {
21 | this.requiresPermissions = requiresPermissions;
22 | }
23 |
24 | public void setRequiresPermissionsDesc(RequiresPermissionsDesc requiresPermissionsDesc) {
25 | this.requiresPermissionsDesc = requiresPermissionsDesc;
26 | }
27 |
28 | public String getApi() {
29 | return api;
30 | }
31 |
32 | public void setApi(String api) {
33 | this.api = api;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/StatVo.java:
--------------------------------------------------------------------------------
1 | package com.qiguliuxing.dts.admin.util;
2 |
3 | import java.util.ArrayList;
4 | import java.util.Arrays;
5 | import java.util.List;
6 | import java.util.Map;
7 |
8 | @SuppressWarnings("rawtypes")
9 | public class StatVo {
10 | private String[] columns = new String[0];
11 | private List