├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── docker-compose.yml ├── images ├── linux下jmeter-1s-100000请求.png └── 支付页面.jpg ├── pom.xml ├── src └── main │ ├── java │ └── ltd │ │ └── newbee │ │ └── mall │ │ ├── NewBeeMallPlusApplication.java │ │ ├── annotion │ │ └── RepeatSubmit.java │ │ ├── common │ │ ├── Constants.java │ │ ├── IndexConfigTypeEnum.java │ │ ├── NewBeeMallCategoryLevelEnum.java │ │ ├── NewBeeMallOrderStatusEnum.java │ │ ├── PayStatusEnum.java │ │ ├── PayTypeEnum.java │ │ ├── SeckillStatusEnum.java │ │ └── ServiceResultEnum.java │ │ ├── config │ │ ├── AlipayConfig.java │ │ ├── CacheConfig.java │ │ ├── FilterConfig.java │ │ ├── GlobalJsonDeserializer.java │ │ ├── HikariConfig.java │ │ ├── ProjectConfig.java │ │ └── WebConfig.java │ │ ├── controller │ │ ├── admin │ │ │ ├── AdminController.java │ │ │ ├── NewBeeMallCarouselController.java │ │ │ ├── NewBeeMallCouponController.java │ │ │ ├── NewBeeMallGoodsCategoryController.java │ │ │ ├── NewBeeMallGoodsController.java │ │ │ ├── NewBeeMallGoodsIndexConfigController.java │ │ │ ├── NewBeeMallOrderController.java │ │ │ ├── NewBeeMallSeckillController.java │ │ │ └── NewBeeMallUserController.java │ │ ├── common │ │ │ ├── CommonController.java │ │ │ ├── ErrorPageController.java │ │ │ └── UploadController.java │ │ ├── mall │ │ │ ├── CouponController.java │ │ │ ├── GoodsController.java │ │ │ ├── IndexController.java │ │ │ ├── OrderController.java │ │ │ ├── PersonalController.java │ │ │ ├── SecKillController.java │ │ │ └── ShoppingCartController.java │ │ └── vo │ │ │ ├── ExposerVO.java │ │ │ ├── NewBeeMallCouponVO.java │ │ │ ├── NewBeeMallGoodsDetailVO.java │ │ │ ├── NewBeeMallIndexCarouselVO.java │ │ │ ├── NewBeeMallIndexCategoryVO.java │ │ │ ├── NewBeeMallIndexConfigGoodsVO.java │ │ │ ├── NewBeeMallMyCouponVO.java │ │ │ ├── NewBeeMallOrderDetailVO.java │ │ │ ├── NewBeeMallOrderItemVO.java │ │ │ ├── NewBeeMallOrderListVO.java │ │ │ ├── NewBeeMallSearchGoodsVO.java │ │ │ ├── NewBeeMallSeckillGoodsVO.java │ │ │ ├── NewBeeMallShoppingCartItemVO.java │ │ │ ├── NewBeeMallUserVO.java │ │ │ ├── SearchPageCategoryVO.java │ │ │ ├── SeckillSuccessVO.java │ │ │ ├── SecondLevelCategoryVO.java │ │ │ └── ThirdLevelCategoryVO.java │ │ ├── dao │ │ ├── AdminUserMapper.java │ │ ├── CarouselMapper.java │ │ ├── GoodsCategoryMapper.java │ │ ├── IndexConfigMapper.java │ │ ├── MallUserMapper.java │ │ ├── NewBeeMallCouponMapper.java │ │ ├── NewBeeMallGoodsMapper.java │ │ ├── NewBeeMallOrderItemMapper.java │ │ ├── NewBeeMallOrderMapper.java │ │ ├── NewBeeMallSeckillMapper.java │ │ ├── NewBeeMallSeckillSuccessMapper.java │ │ ├── NewBeeMallShoppingCartItemMapper.java │ │ └── NewBeeMallUserCouponRecordMapper.java │ │ ├── entity │ │ ├── AdminUser.java │ │ ├── Carousel.java │ │ ├── GoodsCategory.java │ │ ├── IndexConfig.java │ │ ├── MallUser.java │ │ ├── NewBeeMallCoupon.java │ │ ├── NewBeeMallGoods.java │ │ ├── NewBeeMallOrder.java │ │ ├── NewBeeMallOrderItem.java │ │ ├── NewBeeMallSeckill.java │ │ ├── NewBeeMallSeckillSuccess.java │ │ ├── NewBeeMallShoppingCartItem.java │ │ ├── NewBeeMallUserCouponRecord.java │ │ └── StockNumDTO.java │ │ ├── exception │ │ ├── NewBeeMallException.java │ │ └── NewBeeMallExceptionHandler.java │ │ ├── redis │ │ └── RedisCache.java │ │ ├── service │ │ ├── AdminUserService.java │ │ ├── NewBeeMallCarouselService.java │ │ ├── NewBeeMallCategoryService.java │ │ ├── NewBeeMallCouponService.java │ │ ├── NewBeeMallGoodsService.java │ │ ├── NewBeeMallIndexConfigService.java │ │ ├── NewBeeMallOrderService.java │ │ ├── NewBeeMallSeckillService.java │ │ ├── NewBeeMallShoppingCartService.java │ │ ├── NewBeeMallUserCouponRecordService.java │ │ ├── NewBeeMallUserService.java │ │ └── impl │ │ │ ├── AdminUserServiceImpl.java │ │ │ ├── NewBeeMallCarouselServiceImpl.java │ │ │ ├── NewBeeMallCategoryServiceImpl.java │ │ │ ├── NewBeeMallCouponServiceImpl.java │ │ │ ├── NewBeeMallGoodsServiceImpl.java │ │ │ ├── NewBeeMallIndexConfigServiceImpl.java │ │ │ ├── NewBeeMallOrderServiceImpl.java │ │ │ ├── NewBeeMallSeckillServiceImpl.java │ │ │ ├── NewBeeMallShoppingCartServiceImpl.java │ │ │ ├── NewBeeMallUserCouponRecordServiceImpl.java │ │ │ └── NewBeeMallUserServiceImpl.java │ │ ├── task │ │ ├── OrderUnPaidTask.java │ │ ├── Task.java │ │ ├── TaskService.java │ │ └── TaskStartupRunner.java │ │ ├── util │ │ ├── BeanUtil.java │ │ ├── HttpUtil.java │ │ ├── IOUtil.java │ │ ├── JsonUtil.java │ │ ├── MD5Util.java │ │ ├── NewBeeMallUtils.java │ │ ├── NumberUtil.java │ │ ├── PageQueryUtil.java │ │ ├── PageResult.java │ │ ├── PatternUtil.java │ │ ├── Result.java │ │ ├── ResultGenerator.java │ │ ├── SpringContextUtil.java │ │ └── SystemUtil.java │ │ └── web │ │ ├── filter │ │ ├── XssFilter.java │ │ └── XssHttpServletRequestWrapper.java │ │ └── interceptor │ │ ├── AdminLoginInterceptor.java │ │ ├── NewBeeMallCartNumberInterceptor.java │ │ ├── NewBeeMallLoginInterceptor.java │ │ └── RepeatSubmitInterceptor.java │ └── resources │ ├── application-dev.yml │ ├── application-prod.yml │ ├── application.yml │ ├── logback-spring.xml │ ├── mapper │ ├── AdminUserMapper.xml │ ├── CarouselMapper.xml │ ├── GoodsCategoryMapper.xml │ ├── IndexConfigMapper.xml │ ├── MallUserMapper.xml │ ├── NewBeeMallCouponMapper.xml │ ├── NewBeeMallGoodsMapper.xml │ ├── NewBeeMallOrderItemMapper.xml │ ├── NewBeeMallOrderMapper.xml │ ├── NewBeeMallSeckillMapper.xml │ ├── NewBeeMallSeckillSuccessMapper.xml │ ├── NewBeeMallShoppingCartItemMapper.xml │ └── NewBeeMallUserCouponRecordMapper.xml │ ├── newbee_mall_plus_schema.sql │ ├── static │ ├── admin │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── adminlte.css │ │ │ │ ├── adminlte.css.map │ │ │ │ ├── adminlte.min.css │ │ │ │ ├── font-awesome.min.css │ │ │ │ ├── ionicons.min.css │ │ │ │ └── main.css │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── img │ │ │ │ ├── AdminLTELogo.png │ │ │ │ ├── boxed-bg.jpg │ │ │ │ ├── boxed-bg.png │ │ │ │ ├── default-150x150.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── icons.png │ │ │ │ ├── img-upload.png │ │ │ │ ├── newbee-logo.png │ │ │ │ ├── newbee-mall-logo.png │ │ │ │ └── no-img.png │ │ │ └── js │ │ │ │ ├── adminlte.js │ │ │ │ ├── adminlte.js.map │ │ │ │ ├── adminlte.min.js │ │ │ │ ├── adminlte.min.js.map │ │ │ │ ├── demo.js │ │ │ │ ├── newbee_mall_carousel.js │ │ │ │ ├── newbee_mall_category.js │ │ │ │ ├── newbee_mall_coupon.js │ │ │ │ ├── newbee_mall_goods.js │ │ │ │ ├── newbee_mall_goods_edit.js │ │ │ │ ├── newbee_mall_index_config.js │ │ │ │ ├── newbee_mall_order.js │ │ │ │ ├── newbee_mall_seckill.js │ │ │ │ ├── newbee_mall_user.js │ │ │ │ ├── plugins │ │ │ │ ├── bootstrap │ │ │ │ │ ├── css │ │ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ │ │ ├── bootstrap-grid.css.map │ │ │ │ │ │ ├── bootstrap-grid.min.css │ │ │ │ │ │ ├── bootstrap-grid.min.css.map │ │ │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ │ │ ├── bootstrap-reboot.css.map │ │ │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ │ └── bootstrap.min.css.map │ │ │ │ │ └── js │ │ │ │ │ │ ├── bootstrap.bundle.js │ │ │ │ │ │ ├── bootstrap.bundle.js.map │ │ │ │ │ │ ├── bootstrap.bundle.min.js │ │ │ │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ │ ├── bootstrap.js.map │ │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ │ └── bootstrap.min.js.map │ │ │ │ ├── font-awesome │ │ │ │ │ ├── css │ │ │ │ │ │ ├── font-awesome.css │ │ │ │ │ │ ├── font-awesome.css.map │ │ │ │ │ │ └── font-awesome.min.css │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ │ ├── jquery │ │ │ │ │ ├── core.js │ │ │ │ │ ├── jquery.js │ │ │ │ │ ├── jquery.min.js │ │ │ │ │ ├── jquery.min.map │ │ │ │ │ ├── jquery.slim.js │ │ │ │ │ ├── jquery.slim.min.js │ │ │ │ │ └── jquery.slim.min.map │ │ │ │ ├── login-bg-particles.js │ │ │ │ └── particles.js │ │ │ │ ├── profile.js │ │ │ │ ├── public.js │ │ │ │ └── test.js │ │ └── plugins │ │ │ ├── ajaxupload │ │ │ └── ajaxupload.js │ │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap-grid.css │ │ │ │ ├── bootstrap-grid.css.map │ │ │ │ ├── bootstrap-grid.min.css │ │ │ │ ├── bootstrap-grid.min.css.map │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ ├── bootstrap-reboot.css.map │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.bundle.js │ │ │ │ ├── bootstrap.bundle.js.map │ │ │ │ ├── bootstrap.bundle.min.js │ │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.js.map │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── bootstrap.min.js.map │ │ │ ├── daterangepicker │ │ │ ├── daterangepicker.css │ │ │ ├── daterangepicker.js │ │ │ └── moment.min.js │ │ │ ├── jqgrid │ │ │ ├── grid.locale-cn.js │ │ │ ├── jquery.jqGrid.min.js │ │ │ ├── ui.jqgrid-bootstrap-ui.css │ │ │ ├── ui.jqgrid-bootstrap.css │ │ │ ├── ui.jqgrid-bootstrap4.css │ │ │ └── ui.jqgrid.css │ │ │ ├── jquery │ │ │ ├── core.js │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ ├── jquery.min.map │ │ │ ├── jquery.slim.js │ │ │ ├── jquery.slim.min.js │ │ │ └── jquery.slim.min.map │ │ │ ├── select2 │ │ │ ├── i18n │ │ │ │ ├── az.js │ │ │ │ ├── bg.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── da.js │ │ │ │ ├── de.js │ │ │ │ ├── en.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fr.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ko.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── mk.js │ │ │ │ ├── nb.js │ │ │ │ ├── nl.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-BR.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── sk.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── th.js │ │ │ │ ├── tr.js │ │ │ │ ├── uk.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-CN.js │ │ │ │ └── zh-TW.js │ │ │ ├── select2.css │ │ │ ├── select2.full.js │ │ │ ├── select2.full.min.js │ │ │ ├── select2.js │ │ │ ├── select2.min.css │ │ │ └── select2.min.js │ │ │ └── sweetalert │ │ │ ├── sweetalert.css │ │ │ └── sweetalert.min.js │ ├── favicon.ico │ └── mall │ │ ├── css │ │ ├── bootstrap-modal.css │ │ ├── bootstrap.css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── common.css │ │ ├── iconfont.css │ │ └── swiper-bundle.min.css │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── glyphicons-halflings-regular.woff2 │ │ ├── iconfont.eot │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ └── iconfont.woff2 │ │ ├── image │ │ ├── 7d.jpg │ │ ├── card.png │ │ ├── close.png │ │ ├── donate.png │ │ ├── hua.png │ │ ├── icon-coupon.png │ │ ├── icon-seckill.png │ │ ├── ji.png │ │ ├── login-logo-2.png │ │ ├── login_bg.png │ │ ├── new-bee-logo-3.png │ │ ├── null-content.png │ │ ├── pay │ │ │ ├── alipay_logo.jpg │ │ │ ├── alipay_qrcode.png │ │ │ ├── payOnline_gdyh.png │ │ │ ├── payOnline_gfyh.png │ │ │ ├── payOnline_gsyh.png │ │ │ ├── payOnline_jiangsshuyh.png │ │ │ ├── payOnline_jsyh.png │ │ │ ├── payOnline_jtyh.png │ │ │ ├── payOnline_nyyh.png │ │ │ ├── payOnline_pufa.png │ │ │ ├── payOnline_shncsyyh.png │ │ │ ├── payOnline_xyyh.png │ │ │ ├── payOnline_youzheng.png │ │ │ ├── payOnline_zfb.png │ │ │ ├── payOnline_zgyh.png │ │ │ ├── payOnline_zsyh.png │ │ │ ├── payOnline_zxyh.png │ │ │ ├── scan-alipay.png │ │ │ ├── scan-wx.png │ │ │ ├── unionpay.png │ │ │ ├── wave-repeat.png │ │ │ ├── weixinpay.png │ │ │ ├── wx_logo.jpg │ │ │ └── wxpay_qrcode.png │ │ ├── right-@1x.png │ │ ├── search-cart.png │ │ ├── search.png │ │ ├── sub_banner │ │ │ ├── air.jpg │ │ │ ├── baby-car.jpg │ │ │ ├── headphones.jpg │ │ │ ├── hot1.png │ │ │ ├── hot2.jpg │ │ │ ├── hot3.jpg │ │ │ ├── hot4.jpg │ │ │ ├── m6.jpg │ │ │ ├── pc.jpg │ │ │ ├── r1.jpg │ │ │ ├── r2.jpg │ │ │ ├── r3.jpg │ │ │ ├── r4.jpg │ │ │ ├── r5.jpg │ │ │ └── r6.jpg │ │ ├── swiper │ │ │ ├── banner01.jpg │ │ │ ├── banner02.jpg │ │ │ └── banner03.jpg │ │ └── tel.png │ │ ├── js │ │ ├── bootstrap3.js │ │ ├── detail.js │ │ ├── index.js │ │ ├── jquery-1.8.0.js │ │ ├── jquery.countdown.min.js │ │ ├── search.js │ │ ├── seckill.js │ │ └── swiper-bundle.min.js │ │ └── styles │ │ ├── addresses.css │ │ ├── cart.css │ │ ├── coupon-list.css │ │ ├── detail.css │ │ ├── header.css │ │ ├── index.css │ │ ├── login.css │ │ ├── my-coupons.css │ │ ├── my-orders.css │ │ ├── order-detail.css │ │ ├── order-settle.css │ │ ├── pay-select.css │ │ ├── pay.css │ │ ├── personal.css │ │ ├── search.css │ │ └── seckill-list.css │ ├── templates │ ├── admin │ │ ├── footer.html │ │ ├── header.html │ │ ├── index.html │ │ ├── login.html │ │ ├── newbee_mall_carousel.html │ │ ├── newbee_mall_category.html │ │ ├── newbee_mall_coupon.html │ │ ├── newbee_mall_goods.html │ │ ├── newbee_mall_goods_edit.html │ │ ├── newbee_mall_index_config.html │ │ ├── newbee_mall_order.html │ │ ├── newbee_mall_seckill.html │ │ ├── newbee_mall_user.html │ │ ├── profile.html │ │ └── sidebar.html │ ├── error │ │ ├── error.html │ │ ├── error_400.html │ │ ├── error_404.html │ │ └── error_5xx.html │ └── mall │ │ ├── alipay.html │ │ ├── cart.html │ │ ├── coupon-list.html │ │ ├── detail.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── index.html │ │ ├── login.html │ │ ├── my-coupons.html │ │ ├── my-orders.html │ │ ├── order-detail.html │ │ ├── order-settle.html │ │ ├── pay-select.html │ │ ├── personal-sidebar.html │ │ ├── personal.html │ │ ├── register.html │ │ ├── search.html │ │ ├── seckill-detail.html │ │ ├── seckill-list.html │ │ └── wxpay.html │ └── 秒杀存储过程.sql └── upload.zip /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Java 2 | *.css linguist-language=Java 3 | *.html linguist-language=Java 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | 25 | /target/ 26 | !.mvn/wrapper/maven-wrapper.jar 27 | 28 | ### STS ### 29 | .apt_generated 30 | .classpath 31 | .factorypath 32 | .project 33 | .settings 34 | .springBeans 35 | .sts4-cache 36 | 37 | ### IntelliJ IDEA ### 38 | .idea 39 | *.iws 40 | *.iml 41 | *.ipr 42 | 43 | ### NetBeans ### 44 | /nbproject/private/ 45 | /build/ 46 | /nbbuild/ 47 | /dist/ 48 | /nbdist/ 49 | /.nb-gradle/ -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | newbee-mall-plus: 4 | image: ibm-semeru-runtimes:open-17-jdk 5 | container_name: newbee-mall-plus 6 | volumes: 7 | - /etc/localtime:/etc/localtime 8 | - /opt/newbeeplus/logs:/home/logs/newbee-mall-plus 9 | - /opt/newbeeplus/upload:/opt/newbee-mall-plus/upload 10 | - ./jars/newbee-mall-plus.jar:/home/app/newbee-mall-plus.jar 11 | restart: always 12 | command: java -Xms512m -Xmx512m -Duser.timezone=GMT+8 -Dfile.encoding=utf-8 -jar /home/app/newbee-mall-plus.jar --server.port=28079 13 | network_mode: "host" 14 | environment: 15 | - TZ=Asia/Shanghai 16 | -------------------------------------------------------------------------------- /images/linux下jmeter-1s-100000请求.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/images/linux下jmeter-1s-100000请求.png -------------------------------------------------------------------------------- /images/支付页面.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/images/支付页面.jpg -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/NewBeeMallPlusApplication.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall; 10 | 11 | import org.mybatis.spring.annotation.MapperScan; 12 | import org.springframework.boot.SpringApplication; 13 | import org.springframework.boot.autoconfigure.SpringBootApplication; 14 | 15 | /** 16 | * @author 13 17 | * @qq交流群 791509631 18 | * @email 2449207463@qq.com 19 | * @link https://github.com/newbee-ltd 20 | */ 21 | @MapperScan(basePackages = "ltd.newbee.mall.dao") 22 | @SpringBootApplication 23 | public class NewBeeMallPlusApplication { 24 | public static void main(String[] args) { 25 | SpringApplication.run(NewBeeMallPlusApplication.class, args); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/annotion/RepeatSubmit.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.annotion; 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 | /** 9 | * 自定义防止重复提交注解 10 | */ 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface RepeatSubmit { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/IndexConfigTypeEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | * @apiNote 首页配置项 1-搜索框热搜 2-搜索下拉框热搜 3-(首页)热销商品 4-(首页)新品上线 5-(首页)为你推荐 17 | */ 18 | public enum IndexConfigTypeEnum { 19 | 20 | DEFAULT(0, "DEFAULT"), 21 | INDEX_SEARCH_HOTS(1, "INDEX_SEARCH_HOTS"), 22 | INDEX_SEARCH_DOWN_HOTS(2, "INDEX_SEARCH_DOWN_HOTS"), 23 | INDEX_GOODS_HOT(3, "INDEX_GOODS_HOTS"), 24 | INDEX_GOODS_NEW(4, "INDEX_GOODS_NEW"), 25 | INDEX_GOODS_RECOMMOND(5, "INDEX_GOODS_RECOMMOND"); 26 | 27 | private int type; 28 | 29 | private String name; 30 | 31 | IndexConfigTypeEnum(int type, String name) { 32 | this.type = type; 33 | this.name = name; 34 | } 35 | 36 | public static IndexConfigTypeEnum getIndexConfigTypeEnumByType(int type) { 37 | for (IndexConfigTypeEnum indexConfigTypeEnum : IndexConfigTypeEnum.values()) { 38 | if (indexConfigTypeEnum.getType() == type) { 39 | return indexConfigTypeEnum; 40 | } 41 | } 42 | return DEFAULT; 43 | } 44 | 45 | public int getType() { 46 | return type; 47 | } 48 | 49 | public void setType(int type) { 50 | this.type = type; 51 | } 52 | 53 | public String getName() { 54 | return name; 55 | } 56 | 57 | public void setName(String name) { 58 | this.name = name; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/NewBeeMallCategoryLevelEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | * @apiNote 分类级别 17 | */ 18 | public enum NewBeeMallCategoryLevelEnum { 19 | 20 | DEFAULT(0, "ERROR"), 21 | LEVEL_ONE(1, "一级分类"), 22 | LEVEL_TWO(2, "二级分类"), 23 | LEVEL_THREE(3, "三级分类"); 24 | 25 | private int level; 26 | 27 | private String name; 28 | 29 | NewBeeMallCategoryLevelEnum(int level, String name) { 30 | this.level = level; 31 | this.name = name; 32 | } 33 | 34 | public static NewBeeMallCategoryLevelEnum getNewBeeMallOrderStatusEnumByLevel(int level) { 35 | for (NewBeeMallCategoryLevelEnum newBeeMallCategoryLevelEnum : NewBeeMallCategoryLevelEnum.values()) { 36 | if (newBeeMallCategoryLevelEnum.getLevel() == level) { 37 | return newBeeMallCategoryLevelEnum; 38 | } 39 | } 40 | return DEFAULT; 41 | } 42 | 43 | public int getLevel() { 44 | return level; 45 | } 46 | 47 | public void setLevel(int level) { 48 | this.level = level; 49 | } 50 | 51 | public String getName() { 52 | return name; 53 | } 54 | 55 | public void setName(String name) { 56 | this.name = name; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/NewBeeMallOrderStatusEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | * @apiNote 订单状态:0.待支付 1.已支付 2.配货完成 3:出库成功 4.交易成功 -1.手动关闭 -2.超时关闭 -3.商家关闭 17 | */ 18 | public enum NewBeeMallOrderStatusEnum { 19 | 20 | DEFAULT(-9, "ERROR"), 21 | ORDER_PRE_PAY(0, "待支付"), 22 | ORDER_PAID(1, "已支付"), 23 | ORDER_PACKAGED(2, "配货完成"), 24 | ORDER_EXPRESS(3, "出库成功"), 25 | ORDER_SUCCESS(4, "交易成功"), 26 | ORDER_CLOSED_BY_MALLUSER(-1, "手动关闭"), 27 | ORDER_CLOSED_BY_EXPIRED(-2, "超时关闭"), 28 | ORDER_CLOSED_BY_JUDGE(-3, "商家关闭"); 29 | 30 | private int orderStatus; 31 | 32 | private String name; 33 | 34 | NewBeeMallOrderStatusEnum(int orderStatus, String name) { 35 | this.orderStatus = orderStatus; 36 | this.name = name; 37 | } 38 | 39 | public static NewBeeMallOrderStatusEnum getNewBeeMallOrderStatusEnumByStatus(int orderStatus) { 40 | for (NewBeeMallOrderStatusEnum newBeeMallOrderStatusEnum : NewBeeMallOrderStatusEnum.values()) { 41 | if (newBeeMallOrderStatusEnum.getOrderStatus() == orderStatus) { 42 | return newBeeMallOrderStatusEnum; 43 | } 44 | } 45 | return DEFAULT; 46 | } 47 | 48 | public int getOrderStatus() { 49 | return orderStatus; 50 | } 51 | 52 | public void setOrderStatus(int orderStatus) { 53 | this.orderStatus = orderStatus; 54 | } 55 | 56 | public String getName() { 57 | return name; 58 | } 59 | 60 | public void setName(String name) { 61 | this.name = name; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/PayStatusEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | * @apiNote 订单状态:0.支付中 1.支付成功 -1.支付失败 17 | */ 18 | public enum PayStatusEnum { 19 | 20 | DEFAULT(-1, "支付失败"), 21 | PAY_ING(0, "支付中"), 22 | PAY_SUCCESS(1, "支付成功"); 23 | 24 | private int payStatus; 25 | 26 | private String name; 27 | 28 | PayStatusEnum(int payStatus, String name) { 29 | this.payStatus = payStatus; 30 | this.name = name; 31 | } 32 | 33 | public static PayStatusEnum getPayStatusEnumByStatus(int payStatus) { 34 | for (PayStatusEnum payStatusEnum : PayStatusEnum.values()) { 35 | if (payStatusEnum.getPayStatus() == payStatus) { 36 | return payStatusEnum; 37 | } 38 | } 39 | return DEFAULT; 40 | } 41 | 42 | public int getPayStatus() { 43 | return payStatus; 44 | } 45 | 46 | public void setPayStatus(int payStatus) { 47 | this.payStatus = payStatus; 48 | } 49 | 50 | public String getName() { 51 | return name; 52 | } 53 | 54 | public void setName(String name) { 55 | this.name = name; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/PayTypeEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | * @apiNote 订单状态:0.无 1.支付宝 2.微信支付 17 | */ 18 | public enum PayTypeEnum { 19 | 20 | DEFAULT(-1, "ERROR"), 21 | NOT_PAY(0, "无"), 22 | ALI_PAY(1, "支付宝"), 23 | WEIXIN_PAY(2, "微信支付"); 24 | 25 | private int payType; 26 | 27 | private String name; 28 | 29 | PayTypeEnum(int payType, String name) { 30 | this.payType = payType; 31 | this.name = name; 32 | } 33 | 34 | public static PayTypeEnum getPayTypeEnumByType(int payType) { 35 | for (PayTypeEnum payTypeEnum : PayTypeEnum.values()) { 36 | if (payTypeEnum.getPayType() == payType) { 37 | return payTypeEnum; 38 | } 39 | } 40 | return DEFAULT; 41 | } 42 | 43 | public int getPayType() { 44 | return payType; 45 | } 46 | 47 | public void setPayType(int payType) { 48 | this.payType = payType; 49 | } 50 | 51 | public String getName() { 52 | return name; 53 | } 54 | 55 | public void setName(String name) { 56 | this.name = name; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/SeckillStatusEnum.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.common; 2 | 3 | /** 4 | * 秒杀商品状态enum 5 | */ 6 | public enum SeckillStatusEnum { 7 | // 未到秒杀开始时间 8 | NOT_START, 9 | // 到了秒杀开始时间 10 | START, 11 | // 到了秒杀开始时间,但是秒杀商品库存不足 12 | STARTED_SHORTAGE_STOCK 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/common/ServiceResultEnum.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.common; 10 | 11 | /** 12 | * @author 13 13 | * @qq交流群 791509631 14 | * @email 2449207463@qq.com 15 | * @link https://github.com/newbee-ltd 16 | */ 17 | public enum ServiceResultEnum { 18 | ERROR("error"), 19 | 20 | SUCCESS("success"), 21 | 22 | DATA_NOT_EXIST("未查询到记录!"), 23 | 24 | SAME_CATEGORY_EXIST("已存在同级同名的分类!"), 25 | 26 | SAME_LOGIN_NAME_EXIST("用户名已存在!"), 27 | 28 | LOGIN_NAME_NULL("请输入登录名!"), 29 | 30 | LOGIN_PASSWORD_NULL("请输入密码!"), 31 | 32 | LOGIN_VERIFY_CODE_NULL("请输入验证码!"), 33 | 34 | LOGIN_VERIFY_CODE_ERROR("验证码错误!"), 35 | 36 | SAME_INDEX_CONFIG_EXIST("已存在相同的首页配置项!"), 37 | 38 | GOODS_CATEGORY_ERROR("分类数据异常!"), 39 | 40 | SAME_GOODS_EXIST("已存在相同的商品信息!"), 41 | 42 | GOODS_NOT_EXIST("商品不存在!"), 43 | 44 | GOODS_PUT_DOWN("商品已下架!"), 45 | 46 | SHOPPING_CART_ITEM_LIMIT_NUMBER_ERROR("超出单个商品的最大购买数量!"), 47 | 48 | SHOPPING_CART_ITEM_TOTAL_NUMBER_ERROR("超出购物车最大容量!"), 49 | 50 | LOGIN_ERROR("登录失败!"), 51 | 52 | LOGIN_USER_LOCKED("用户已被禁止登录!"), 53 | 54 | ORDER_NOT_EXIST_ERROR("订单不存在!"), 55 | 56 | ORDER_ITEM_NOT_EXIST_ERROR("订单项不存在!"), 57 | 58 | NULL_ADDRESS_ERROR("地址不能为空!"), 59 | 60 | ORDER_PRICE_ERROR("订单价格异常!"), 61 | 62 | ORDER_GENERATE_ERROR("生成订单异常!"), 63 | 64 | SHOPPING_ITEM_ERROR("购物车数据异常!"), 65 | 66 | SHOPPING_ITEM_COUNT_ERROR("库存不足!"), 67 | 68 | ORDER_STATUS_ERROR("订单状态异常!"), 69 | 70 | OPERATE_ERROR("操作失败!"), 71 | 72 | NO_PERMISSION_ERROR("无权限!"), 73 | 74 | DB_ERROR("database error"); 75 | 76 | private String result; 77 | 78 | ServiceResultEnum(String result) { 79 | this.result = result; 80 | } 81 | 82 | public String getResult() { 83 | return result; 84 | } 85 | 86 | public void setResult(String result) { 87 | this.result = result; 88 | } 89 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/config/AlipayConfig.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.config; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @ConfigurationProperties(prefix = "alipay") 8 | public class AlipayConfig { 9 | 10 | private String appId; 11 | private String rsaPrivateKey; 12 | private String alipayPublicKey; 13 | private String gateway; 14 | private String charset; 15 | private String format; 16 | private String logPath; 17 | private String signtype; 18 | 19 | public String getAppId() { 20 | return appId; 21 | } 22 | 23 | public AlipayConfig setAppId(String appId) { 24 | this.appId = appId; 25 | return this; 26 | } 27 | 28 | public String getRsaPrivateKey() { 29 | return rsaPrivateKey; 30 | } 31 | 32 | public AlipayConfig setRsaPrivateKey(String rsaPrivateKey) { 33 | this.rsaPrivateKey = rsaPrivateKey; 34 | return this; 35 | } 36 | 37 | public String getAlipayPublicKey() { 38 | return alipayPublicKey; 39 | } 40 | 41 | public AlipayConfig setAlipayPublicKey(String alipayPublicKey) { 42 | this.alipayPublicKey = alipayPublicKey; 43 | return this; 44 | } 45 | 46 | public String getGateway() { 47 | return gateway; 48 | } 49 | 50 | public AlipayConfig setGateway(String gateway) { 51 | this.gateway = gateway; 52 | return this; 53 | } 54 | 55 | public String getCharset() { 56 | return charset; 57 | } 58 | 59 | public AlipayConfig setCharset(String charset) { 60 | this.charset = charset; 61 | return this; 62 | } 63 | 64 | public String getFormat() { 65 | return format; 66 | } 67 | 68 | public AlipayConfig setFormat(String format) { 69 | this.format = format; 70 | return this; 71 | } 72 | 73 | public String getLogPath() { 74 | return logPath; 75 | } 76 | 77 | public AlipayConfig setLogPath(String logPath) { 78 | this.logPath = logPath; 79 | return this; 80 | } 81 | 82 | public String getSigntype() { 83 | return signtype; 84 | } 85 | 86 | public AlipayConfig setSigntype(String signtype) { 87 | this.signtype = signtype; 88 | return this; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/config/FilterConfig.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.config; 2 | 3 | import jakarta.servlet.DispatcherType; 4 | import jakarta.servlet.Filter; 5 | import ltd.newbee.mall.web.filter.XssFilter; 6 | import org.apache.commons.lang3.StringUtils; 7 | import org.springframework.beans.factory.annotation.Value; 8 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 9 | import org.springframework.boot.web.servlet.FilterRegistrationBean; 10 | import org.springframework.context.annotation.Bean; 11 | import org.springframework.context.annotation.Configuration; 12 | 13 | import java.util.HashMap; 14 | import java.util.Map; 15 | 16 | /** 17 | * Filter配置 18 | */ 19 | @Configuration 20 | @ConditionalOnProperty(value = "xss.enabled", havingValue = "true") 21 | public class FilterConfig { 22 | @Value("${xss.excludes}") 23 | private String excludes; 24 | 25 | @Value("${xss.urlPatterns}") 26 | private String urlPatterns; 27 | 28 | @Bean 29 | public FilterRegistrationBean xssFilterRegistration() { 30 | FilterRegistrationBean registration = new FilterRegistrationBean<>(); 31 | registration.setDispatcherTypes(DispatcherType.REQUEST); 32 | registration.setFilter(new XssFilter()); 33 | registration.addUrlPatterns(StringUtils.split(urlPatterns, ",")); 34 | registration.setName("xssFilter"); 35 | registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); 36 | Map initParameters = new HashMap<>(); 37 | initParameters.put("excludes", excludes); 38 | registration.setInitParameters(initParameters); 39 | return registration; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/config/GlobalJsonDeserializer.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.config; 2 | 3 | import com.fasterxml.jackson.core.JsonParser; 4 | import com.fasterxml.jackson.databind.DeserializationContext; 5 | import com.fasterxml.jackson.databind.JsonDeserializer; 6 | import org.apache.commons.text.StringEscapeUtils; 7 | import org.springframework.boot.jackson.JsonComponent; 8 | 9 | import java.io.IOException; 10 | 11 | /** 12 | * 添加全局的json反序列化设置 13 | */ 14 | @JsonComponent 15 | public class GlobalJsonDeserializer { 16 | 17 | /** 18 | * 字符串反序列化器 19 | * 过滤特殊字符,解决 XSS 攻击 20 | */ 21 | public static class StringDeserializer extends JsonDeserializer { 22 | 23 | @Override 24 | public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { 25 | // 防止xss攻击 26 | return StringEscapeUtils.escapeHtml4(jsonParser.getValueAsString()); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/config/HikariConfig.java: -------------------------------------------------------------------------------- 1 | // package ltd.newbee.mall.config; 2 | // 3 | // import com.zaxxer.hikari.HikariDataSource; 4 | // import org.apache.ibatis.session.SqlSessionFactory; 5 | // import org.mybatis.spring.annotation.MapperScan; 6 | // import org.springframework.beans.factory.annotation.Qualifier; 7 | // import org.springframework.boot.context.properties.ConfigurationProperties; 8 | // import org.springframework.context.annotation.Bean; 9 | // import org.springframework.context.annotation.Configuration; 10 | // import org.springframework.context.annotation.EnableAspectJAutoProxy; 11 | // import org.springframework.context.annotation.Primary; 12 | // import org.springframework.core.io.support.PathMatchingResourcePatternResolver; 13 | // import org.springframework.jdbc.datasource.DataSourceTransactionManager; 14 | // import org.springframework.transaction.annotation.EnableTransactionManagement; 15 | // 16 | // import javax.sql.DataSource; 17 | // 18 | // 19 | // @Configuration 20 | // @EnableAspectJAutoProxy 21 | // @EnableTransactionManagement 22 | // @MapperScan(basePackages = "ltd.newbee.mall.dao", sqlSessionFactoryRef = "masterSqlSessionFactory") 23 | // public class HikariConfig { 24 | // 25 | // 26 | // @Bean(name = "dataSource") 27 | // @ConfigurationProperties(prefix = "spring.datasource.hikari") 28 | // public DataSource masterDataSource() { 29 | // return new HikariDataSource(); 30 | // } 31 | // 32 | // /** 33 | // * @param datasource 数据源 34 | // * @return SqlSessionFactory 35 | // * @Primary 默认SqlSessionFactory 36 | // */ 37 | // @Primary 38 | // @Bean(name = "masterSqlSessionFactory") 39 | // public SqlSessionFactory masterSqlSessionFactory(@Qualifier("dataSource") DataSource datasource) throws Exception { 40 | // SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); 41 | // bean.setDataSource(datasource); 42 | // // mybatis扫描xml所在位置 43 | // bean.setMapperLocations(new PathMatchingResourcePatternResolver() 44 | // .getResources("classpath*:mapper/*.xml")); 45 | // bean.setTypeAliasesPackage("ltd.**.entity"); 46 | // return bean.getObject(); 47 | // } 48 | // 49 | // @Bean(name = "masterTransactionManager") 50 | // public DataSourceTransactionManager masterTransactionManager(@Qualifier("dataSource") DataSource dataSource) { 51 | // return new DataSourceTransactionManager(dataSource); 52 | // } 53 | // } 54 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/config/ProjectConfig.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.config; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * 项目全局配置 8 | */ 9 | @Component 10 | @ConfigurationProperties(prefix = "project") 11 | public class ProjectConfig { 12 | 13 | /** 14 | * 项目名称 15 | */ 16 | private static String name; 17 | /** 18 | * 上传文件路径 19 | */ 20 | private static String fileUploadPath; 21 | /** 22 | * 订单超期未支付时间,单位秒 23 | */ 24 | private static Integer orderUnpaidOverTime; 25 | 26 | /** 27 | * 服务端访问路径 28 | */ 29 | private static String serverUrl; 30 | 31 | public static String getName() { 32 | return name; 33 | } 34 | 35 | public void setName(String name) { 36 | ProjectConfig.name = name; 37 | } 38 | 39 | public static String getFileUploadPath() { 40 | return fileUploadPath; 41 | } 42 | 43 | public void setFileUploadPath(String fileUploadPath) { 44 | ProjectConfig.fileUploadPath = fileUploadPath; 45 | } 46 | 47 | public static Integer getOrderUnpaidOverTime() { 48 | return orderUnpaidOverTime; 49 | } 50 | 51 | public void setOrderUnpaidOverTime(Integer orderUnpaidOverTime) { 52 | ProjectConfig.orderUnpaidOverTime = orderUnpaidOverTime; 53 | } 54 | 55 | public static String getServerUrl() { 56 | return serverUrl; 57 | } 58 | 59 | public void setServerUrl(String serverUrl) { 60 | ProjectConfig.serverUrl = serverUrl; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/common/ErrorPageController.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.common; 10 | 11 | import jakarta.servlet.http.HttpServletRequest; 12 | import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController; 13 | import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver; 14 | import org.springframework.boot.web.error.ErrorAttributeOptions; 15 | import org.springframework.boot.web.servlet.error.ErrorAttributes; 16 | import org.springframework.http.HttpStatus; 17 | import org.springframework.http.ResponseEntity; 18 | import org.springframework.stereotype.Controller; 19 | import org.springframework.web.bind.annotation.RequestMapping; 20 | import org.springframework.web.bind.annotation.ResponseBody; 21 | import org.springframework.web.servlet.ModelAndView; 22 | 23 | import java.util.List; 24 | import java.util.Map; 25 | 26 | @Controller 27 | public class ErrorPageController extends AbstractErrorController { 28 | 29 | private final static String ERROR_PATH = "/error"; 30 | 31 | public ErrorPageController(ErrorAttributes errorAttributes, List errorViewResolvers) { 32 | super(errorAttributes, errorViewResolvers); 33 | } 34 | 35 | 36 | @RequestMapping(value = ERROR_PATH, produces = "text/html") 37 | public ModelAndView errorHtml(HttpServletRequest request) { 38 | HttpStatus status = getStatus(request); 39 | if (HttpStatus.BAD_REQUEST == status) { 40 | return new ModelAndView("error/error_400"); 41 | } else if (HttpStatus.NOT_FOUND == status) { 42 | return new ModelAndView("error/error_404"); 43 | } else { 44 | return new ModelAndView("error/error_5xx"); 45 | } 46 | } 47 | 48 | @RequestMapping(value = ERROR_PATH) 49 | @ResponseBody 50 | public ResponseEntity> error(HttpServletRequest request) { 51 | Map body = getErrorAttributes(request, ErrorAttributeOptions.of(ErrorAttributeOptions.Include.values())); 52 | HttpStatus status = getStatus(request); 53 | return new ResponseEntity<>(body, status); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallIndexCarouselVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 首页轮播图VO 15 | */ 16 | public class NewBeeMallIndexCarouselVO implements Serializable { 17 | 18 | private String carouselUrl; 19 | 20 | private String redirectUrl; 21 | 22 | public String getCarouselUrl() { 23 | return carouselUrl; 24 | } 25 | 26 | public void setCarouselUrl(String carouselUrl) { 27 | this.carouselUrl = carouselUrl; 28 | } 29 | 30 | public String getRedirectUrl() { 31 | return redirectUrl; 32 | } 33 | 34 | public void setRedirectUrl(String redirectUrl) { 35 | this.redirectUrl = redirectUrl; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallIndexCategoryVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | import java.util.List; 13 | 14 | /** 15 | * 首页分类数据VO 16 | */ 17 | public class NewBeeMallIndexCategoryVO implements Serializable { 18 | 19 | private Long categoryId; 20 | 21 | private Byte categoryLevel; 22 | 23 | private String categoryName; 24 | 25 | private List secondLevelCategoryVOS; 26 | 27 | public Long getCategoryId() { 28 | return categoryId; 29 | } 30 | 31 | public void setCategoryId(Long categoryId) { 32 | this.categoryId = categoryId; 33 | } 34 | 35 | public Byte getCategoryLevel() { 36 | return categoryLevel; 37 | } 38 | 39 | public void setCategoryLevel(Byte categoryLevel) { 40 | this.categoryLevel = categoryLevel; 41 | } 42 | 43 | public String getCategoryName() { 44 | return categoryName; 45 | } 46 | 47 | public void setCategoryName(String categoryName) { 48 | this.categoryName = categoryName; 49 | } 50 | 51 | public List getSecondLevelCategoryVOS() { 52 | return secondLevelCategoryVOS; 53 | } 54 | 55 | public void setSecondLevelCategoryVOS(List secondLevelCategoryVOS) { 56 | this.secondLevelCategoryVOS = secondLevelCategoryVOS; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallIndexConfigGoodsVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 首页配置商品VO 15 | */ 16 | public class NewBeeMallIndexConfigGoodsVO implements Serializable { 17 | 18 | private Long goodsId; 19 | 20 | private String goodsName; 21 | 22 | private String goodsIntro; 23 | 24 | private String goodsCoverImg; 25 | 26 | private Integer sellingPrice; 27 | 28 | private String tag; 29 | 30 | public Long getGoodsId() { 31 | return goodsId; 32 | } 33 | 34 | public void setGoodsId(Long goodsId) { 35 | this.goodsId = goodsId; 36 | } 37 | 38 | public String getGoodsName() { 39 | return goodsName; 40 | } 41 | 42 | public void setGoodsName(String goodsName) { 43 | this.goodsName = goodsName; 44 | } 45 | 46 | public String getGoodsIntro() { 47 | return goodsIntro; 48 | } 49 | 50 | public void setGoodsIntro(String goodsIntro) { 51 | this.goodsIntro = goodsIntro; 52 | } 53 | 54 | public String getGoodsCoverImg() { 55 | return goodsCoverImg; 56 | } 57 | 58 | public void setGoodsCoverImg(String goodsCoverImg) { 59 | this.goodsCoverImg = goodsCoverImg; 60 | } 61 | 62 | public Integer getSellingPrice() { 63 | return sellingPrice; 64 | } 65 | 66 | public void setSellingPrice(Integer sellingPrice) { 67 | this.sellingPrice = sellingPrice; 68 | } 69 | 70 | public String getTag() { 71 | return tag; 72 | } 73 | 74 | public void setTag(String tag) { 75 | this.tag = tag; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallOrderItemVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 订单详情页页面订单项VO 15 | */ 16 | public class NewBeeMallOrderItemVO implements Serializable { 17 | 18 | private Long goodsId; 19 | 20 | private Integer goodsCount; 21 | 22 | private String goodsName; 23 | 24 | private String goodsCoverImg; 25 | 26 | private Integer sellingPrice; 27 | 28 | public Long getGoodsId() { 29 | return goodsId; 30 | } 31 | 32 | public void setGoodsId(Long goodsId) { 33 | this.goodsId = goodsId; 34 | } 35 | 36 | public String getGoodsName() { 37 | return goodsName; 38 | } 39 | 40 | public void setGoodsName(String goodsName) { 41 | this.goodsName = goodsName; 42 | } 43 | 44 | public String getGoodsCoverImg() { 45 | return goodsCoverImg; 46 | } 47 | 48 | public void setGoodsCoverImg(String goodsCoverImg) { 49 | this.goodsCoverImg = goodsCoverImg; 50 | } 51 | 52 | public Integer getSellingPrice() { 53 | return sellingPrice; 54 | } 55 | 56 | public void setSellingPrice(Integer sellingPrice) { 57 | this.sellingPrice = sellingPrice; 58 | } 59 | 60 | public Integer getGoodsCount() { 61 | return goodsCount; 62 | } 63 | 64 | public void setGoodsCount(Integer goodsCount) { 65 | this.goodsCount = goodsCount; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallSearchGoodsVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 搜索列表页商品VO 15 | */ 16 | public class NewBeeMallSearchGoodsVO implements Serializable { 17 | 18 | private Long goodsId; 19 | 20 | private String goodsName; 21 | 22 | private String goodsIntro; 23 | 24 | private String goodsCoverImg; 25 | 26 | private Integer sellingPrice; 27 | 28 | public Long getGoodsId() { 29 | return goodsId; 30 | } 31 | 32 | public void setGoodsId(Long goodsId) { 33 | this.goodsId = goodsId; 34 | } 35 | 36 | public String getGoodsName() { 37 | return goodsName; 38 | } 39 | 40 | public void setGoodsName(String goodsName) { 41 | this.goodsName = goodsName; 42 | } 43 | 44 | public String getGoodsIntro() { 45 | return goodsIntro; 46 | } 47 | 48 | public void setGoodsIntro(String goodsIntro) { 49 | this.goodsIntro = goodsIntro; 50 | } 51 | 52 | public String getGoodsCoverImg() { 53 | return goodsCoverImg; 54 | } 55 | 56 | public void setGoodsCoverImg(String goodsCoverImg) { 57 | this.goodsCoverImg = goodsCoverImg; 58 | } 59 | 60 | public Integer getSellingPrice() { 61 | return sellingPrice; 62 | } 63 | 64 | public void setSellingPrice(Integer sellingPrice) { 65 | this.sellingPrice = sellingPrice; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallShoppingCartItemVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 购物车页面购物项VO 15 | */ 16 | public class NewBeeMallShoppingCartItemVO implements Serializable { 17 | 18 | private Long cartItemId; 19 | 20 | private Long goodsId; 21 | 22 | private Integer goodsCount; 23 | 24 | private String goodsName; 25 | 26 | private String goodsCoverImg; 27 | 28 | private Integer sellingPrice; 29 | 30 | public Long getGoodsId() { 31 | return goodsId; 32 | } 33 | 34 | public void setGoodsId(Long goodsId) { 35 | this.goodsId = goodsId; 36 | } 37 | 38 | public String getGoodsName() { 39 | return goodsName; 40 | } 41 | 42 | public void setGoodsName(String goodsName) { 43 | this.goodsName = goodsName; 44 | } 45 | 46 | public String getGoodsCoverImg() { 47 | return goodsCoverImg; 48 | } 49 | 50 | public void setGoodsCoverImg(String goodsCoverImg) { 51 | this.goodsCoverImg = goodsCoverImg; 52 | } 53 | 54 | public Integer getSellingPrice() { 55 | return sellingPrice; 56 | } 57 | 58 | public void setSellingPrice(Integer sellingPrice) { 59 | this.sellingPrice = sellingPrice; 60 | } 61 | 62 | public Long getCartItemId() { 63 | return cartItemId; 64 | } 65 | 66 | public void setCartItemId(Long cartItemId) { 67 | this.cartItemId = cartItemId; 68 | } 69 | 70 | public Integer getGoodsCount() { 71 | return goodsCount; 72 | } 73 | 74 | public void setGoodsCount(Integer goodsCount) { 75 | this.goodsCount = goodsCount; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/NewBeeMallUserVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | import java.util.StringJoiner; 13 | 14 | public class NewBeeMallUserVO implements Serializable { 15 | 16 | private Long userId; 17 | 18 | private String nickName; 19 | 20 | private String loginName; 21 | 22 | private String introduceSign; 23 | 24 | private String address; 25 | 26 | private Integer shopCartItemCount; 27 | 28 | public Long getUserId() { 29 | return userId; 30 | } 31 | 32 | public void setUserId(Long userId) { 33 | this.userId = userId; 34 | } 35 | 36 | public String getNickName() { 37 | return nickName; 38 | } 39 | 40 | public void setNickName(String nickName) { 41 | this.nickName = nickName; 42 | } 43 | 44 | public String getLoginName() { 45 | return loginName; 46 | } 47 | 48 | public void setLoginName(String loginName) { 49 | this.loginName = loginName; 50 | } 51 | 52 | public String getIntroduceSign() { 53 | return introduceSign; 54 | } 55 | 56 | public void setIntroduceSign(String introduceSign) { 57 | this.introduceSign = introduceSign; 58 | } 59 | 60 | public String getAddress() { 61 | return address; 62 | } 63 | 64 | public void setAddress(String address) { 65 | this.address = address; 66 | } 67 | 68 | public Integer getShopCartItemCount() { 69 | return shopCartItemCount; 70 | } 71 | 72 | public void setShopCartItemCount(Integer shopCartItemCount) { 73 | this.shopCartItemCount = shopCartItemCount; 74 | } 75 | 76 | @Override 77 | public String toString() { 78 | return new StringJoiner(", ", NewBeeMallUserVO.class.getSimpleName() + "[", "]") 79 | .add("userId=" + userId) 80 | .add("nickName='" + nickName + "'") 81 | .add("loginName='" + loginName + "'") 82 | .add("introduceSign='" + introduceSign + "'") 83 | .add("address='" + address + "'") 84 | .add("shopCartItemCount=" + shopCartItemCount) 85 | .toString(); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/SearchPageCategoryVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import ltd.newbee.mall.entity.GoodsCategory; 12 | 13 | import java.io.Serializable; 14 | import java.util.List; 15 | 16 | /** 17 | * 搜索页面分类数据VO 18 | */ 19 | public class SearchPageCategoryVO implements Serializable { 20 | 21 | private String firstLevelCategoryName; 22 | 23 | private List secondLevelCategoryList; 24 | 25 | private String secondLevelCategoryName; 26 | 27 | private List thirdLevelCategoryList; 28 | 29 | private String currentCategoryName; 30 | 31 | public String getFirstLevelCategoryName() { 32 | return firstLevelCategoryName; 33 | } 34 | 35 | public void setFirstLevelCategoryName(String firstLevelCategoryName) { 36 | this.firstLevelCategoryName = firstLevelCategoryName; 37 | } 38 | 39 | public List getSecondLevelCategoryList() { 40 | return secondLevelCategoryList; 41 | } 42 | 43 | public void setSecondLevelCategoryList(List secondLevelCategoryList) { 44 | this.secondLevelCategoryList = secondLevelCategoryList; 45 | } 46 | 47 | public String getSecondLevelCategoryName() { 48 | return secondLevelCategoryName; 49 | } 50 | 51 | public void setSecondLevelCategoryName(String secondLevelCategoryName) { 52 | this.secondLevelCategoryName = secondLevelCategoryName; 53 | } 54 | 55 | public List getThirdLevelCategoryList() { 56 | return thirdLevelCategoryList; 57 | } 58 | 59 | public void setThirdLevelCategoryList(List thirdLevelCategoryList) { 60 | this.thirdLevelCategoryList = thirdLevelCategoryList; 61 | } 62 | 63 | public String getCurrentCategoryName() { 64 | return currentCategoryName; 65 | } 66 | 67 | public void setCurrentCategoryName(String currentCategoryName) { 68 | this.currentCategoryName = currentCategoryName; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/SeckillSuccessVO.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.controller.vo; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * 用户秒杀成功VO 7 | */ 8 | public class SeckillSuccessVO implements Serializable { 9 | 10 | private static final long serialVersionUID = 1503814153626594835L; 11 | 12 | private Long seckillSuccessId; 13 | 14 | private String md5; 15 | 16 | public Long getSeckillSuccessId() { 17 | return seckillSuccessId; 18 | } 19 | 20 | public void setSeckillSuccessId(Long seckillSuccessId) { 21 | this.seckillSuccessId = seckillSuccessId; 22 | } 23 | 24 | public String getMd5() { 25 | return md5; 26 | } 27 | 28 | public void setMd5(String md5) { 29 | this.md5 = md5; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/SecondLevelCategoryVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | import java.util.List; 13 | 14 | /** 15 | * 首页分类数据VO(第二级) 16 | */ 17 | public class SecondLevelCategoryVO implements Serializable { 18 | 19 | private Long categoryId; 20 | 21 | private Long parentId; 22 | 23 | private Byte categoryLevel; 24 | 25 | private String categoryName; 26 | 27 | private List thirdLevelCategoryVOS; 28 | 29 | public Long getCategoryId() { 30 | return categoryId; 31 | } 32 | 33 | public void setCategoryId(Long categoryId) { 34 | this.categoryId = categoryId; 35 | } 36 | 37 | public Byte getCategoryLevel() { 38 | return categoryLevel; 39 | } 40 | 41 | public void setCategoryLevel(Byte categoryLevel) { 42 | this.categoryLevel = categoryLevel; 43 | } 44 | 45 | public String getCategoryName() { 46 | return categoryName; 47 | } 48 | 49 | public void setCategoryName(String categoryName) { 50 | this.categoryName = categoryName; 51 | } 52 | 53 | public List getThirdLevelCategoryVOS() { 54 | return thirdLevelCategoryVOS; 55 | } 56 | 57 | public void setThirdLevelCategoryVOS(List thirdLevelCategoryVOS) { 58 | this.thirdLevelCategoryVOS = thirdLevelCategoryVOS; 59 | } 60 | 61 | public Long getParentId() { 62 | return parentId; 63 | } 64 | 65 | public void setParentId(Long parentId) { 66 | this.parentId = parentId; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/controller/vo/ThirdLevelCategoryVO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.controller.vo; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * 首页分类数据VO(第三级) 15 | */ 16 | public class ThirdLevelCategoryVO implements Serializable { 17 | 18 | private Long categoryId; 19 | 20 | private Byte categoryLevel; 21 | 22 | private String categoryName; 23 | 24 | public Long getCategoryId() { 25 | return categoryId; 26 | } 27 | 28 | public void setCategoryId(Long categoryId) { 29 | this.categoryId = categoryId; 30 | } 31 | 32 | public Byte getCategoryLevel() { 33 | return categoryLevel; 34 | } 35 | 36 | public void setCategoryLevel(Byte categoryLevel) { 37 | this.categoryLevel = categoryLevel; 38 | } 39 | 40 | public String getCategoryName() { 41 | return categoryName; 42 | } 43 | 44 | public void setCategoryName(String categoryName) { 45 | this.categoryName = categoryName; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/AdminUserMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.AdminUser; 12 | import org.apache.ibatis.annotations.Param; 13 | 14 | public interface AdminUserMapper { 15 | int insert(AdminUser record); 16 | 17 | int insertSelective(AdminUser record); 18 | 19 | /** 20 | * 登陆方法 21 | * 22 | * @param userName 23 | * @param password 24 | * @return 25 | */ 26 | AdminUser login(@Param("userName") String userName, @Param("password") String password); 27 | 28 | AdminUser selectByPrimaryKey(Integer adminUserId); 29 | 30 | int updateByPrimaryKeySelective(AdminUser record); 31 | 32 | int updateByPrimaryKey(AdminUser record); 33 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/CarouselMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.Carousel; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import org.apache.ibatis.annotations.Param; 14 | 15 | import java.util.List; 16 | 17 | public interface CarouselMapper { 18 | int deleteByPrimaryKey(Integer carouselId); 19 | 20 | int insert(Carousel record); 21 | 22 | int insertSelective(Carousel record); 23 | 24 | Carousel selectByPrimaryKey(Integer carouselId); 25 | 26 | int updateByPrimaryKeySelective(Carousel record); 27 | 28 | int updateByPrimaryKey(Carousel record); 29 | 30 | List findCarouselList(PageQueryUtil pageUtil); 31 | 32 | int getTotalCarousels(PageQueryUtil pageUtil); 33 | 34 | int deleteBatch(Integer[] ids); 35 | 36 | List findCarouselsByNum(@Param("number") int number); 37 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/GoodsCategoryMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.GoodsCategory; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import org.apache.ibatis.annotations.Param; 14 | 15 | import java.util.List; 16 | 17 | public interface GoodsCategoryMapper { 18 | int deleteByPrimaryKey(Long categoryId); 19 | 20 | int insert(GoodsCategory record); 21 | 22 | int insertSelective(GoodsCategory record); 23 | 24 | GoodsCategory selectByPrimaryKey(Long categoryId); 25 | 26 | GoodsCategory selectByLevelAndName(@Param("categoryLevel") Byte categoryLevel, @Param("categoryName") String categoryName); 27 | 28 | int updateByPrimaryKeySelective(GoodsCategory record); 29 | 30 | int updateByPrimaryKey(GoodsCategory record); 31 | 32 | List findGoodsCategoryList(PageQueryUtil pageUtil); 33 | 34 | int getTotalGoodsCategories(PageQueryUtil pageUtil); 35 | 36 | int deleteBatch(Integer[] ids); 37 | 38 | List selectByLevelAndParentIdsAndNumber(@Param("parentIds") List parentIds, @Param("categoryLevel") int categoryLevel, @Param("number") int number); 39 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/IndexConfigMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.IndexConfig; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import org.apache.ibatis.annotations.Param; 14 | 15 | import java.util.List; 16 | 17 | public interface IndexConfigMapper { 18 | int deleteByPrimaryKey(Long configId); 19 | 20 | int insert(IndexConfig record); 21 | 22 | int insertSelective(IndexConfig record); 23 | 24 | IndexConfig selectByPrimaryKey(Long configId); 25 | 26 | IndexConfig selectByTypeAndGoodsId(@Param("configType") int configType, @Param("goodsId") Long goodsId); 27 | 28 | int updateByPrimaryKeySelective(IndexConfig record); 29 | 30 | int updateByPrimaryKey(IndexConfig record); 31 | 32 | List findIndexConfigList(PageQueryUtil pageUtil); 33 | 34 | int getTotalIndexConfigs(PageQueryUtil pageUtil); 35 | 36 | int deleteBatch(Long[] ids); 37 | 38 | List findIndexConfigsByTypeAndNum(@Param("configType") int configType, @Param("number") int number); 39 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/MallUserMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.MallUser; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import org.apache.ibatis.annotations.Param; 14 | 15 | import java.util.List; 16 | 17 | public interface MallUserMapper { 18 | int deleteByPrimaryKey(Long userId); 19 | 20 | int insert(MallUser record); 21 | 22 | int insertSelective(MallUser record); 23 | 24 | MallUser selectByPrimaryKey(Long userId); 25 | 26 | MallUser selectByLoginName(String loginName); 27 | 28 | MallUser selectByLoginNameAndPasswd(@Param("loginName") String loginName, @Param("password") String password); 29 | 30 | int updateByPrimaryKeySelective(MallUser record); 31 | 32 | int updateByPrimaryKey(MallUser record); 33 | 34 | List findMallUserList(PageQueryUtil pageUtil); 35 | 36 | int getTotalMallUsers(PageQueryUtil pageUtil); 37 | 38 | int lockUserBatch(@Param("ids") Integer[] ids, @Param("lockStatus") int lockStatus); 39 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallCouponMapper.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.dao; 2 | 3 | import ltd.newbee.mall.entity.NewBeeMallCoupon; 4 | import ltd.newbee.mall.util.PageQueryUtil; 5 | 6 | import java.util.List; 7 | 8 | public interface NewBeeMallCouponMapper { 9 | int deleteByPrimaryKey(Long couponId); 10 | 11 | int deleteBatch(Integer[] couponIds); 12 | 13 | int insert(NewBeeMallCoupon record); 14 | 15 | int insertSelective(NewBeeMallCoupon record); 16 | 17 | NewBeeMallCoupon selectByPrimaryKey(Long couponId); 18 | 19 | int updateByPrimaryKeySelective(NewBeeMallCoupon record); 20 | 21 | int updateByPrimaryKey(NewBeeMallCoupon record); 22 | 23 | List findCouponlList(PageQueryUtil pageUtil); 24 | 25 | int getTotalCoupons(PageQueryUtil pageUtil); 26 | 27 | List selectAvailableCoupon(); 28 | 29 | int reduceCouponTotal(Long couponId); 30 | 31 | List selectByIds(List couponIds); 32 | 33 | List selectAvailableGiveCoupon(); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallGoodsMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.NewBeeMallGoods; 12 | import ltd.newbee.mall.entity.StockNumDTO; 13 | import ltd.newbee.mall.util.PageQueryUtil; 14 | import org.apache.ibatis.annotations.Param; 15 | 16 | import java.util.List; 17 | 18 | public interface NewBeeMallGoodsMapper { 19 | int deleteByPrimaryKey(Long goodsId); 20 | 21 | int insert(NewBeeMallGoods record); 22 | 23 | int insertSelective(NewBeeMallGoods record); 24 | 25 | NewBeeMallGoods selectByPrimaryKey(Long goodsId); 26 | 27 | NewBeeMallGoods selectByCategoryIdAndName(@Param("goodsName") String goodsName, @Param("goodsCategoryId") Long goodsCategoryId); 28 | 29 | int updateByPrimaryKeySelective(NewBeeMallGoods record); 30 | 31 | int updateByPrimaryKeyWithBLOBs(NewBeeMallGoods record); 32 | 33 | int updateByPrimaryKey(NewBeeMallGoods record); 34 | 35 | List findNewBeeMallGoodsList(PageQueryUtil pageUtil); 36 | 37 | int getTotalNewBeeMallGoods(PageQueryUtil pageUtil); 38 | 39 | List selectByPrimaryKeys(List goodsIds); 40 | 41 | List findNewBeeMallGoodsListBySearch(PageQueryUtil pageUtil); 42 | 43 | int getTotalNewBeeMallGoodsBySearch(PageQueryUtil pageUtil); 44 | 45 | int batchInsert(@Param("newBeeMallGoodsList") List newBeeMallGoodsList); 46 | 47 | int updateStockNum(@Param("stockNumDTOS") List stockNumDTOS); 48 | 49 | int batchUpdateSellStatus(@Param("orderIds")Long[] orderIds,@Param("sellStatus") int sellStatus); 50 | 51 | boolean addStock(Long goodsId, Integer goodsCount); 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallOrderItemMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.NewBeeMallOrderItem; 12 | import org.apache.ibatis.annotations.Param; 13 | 14 | import java.util.List; 15 | 16 | public interface NewBeeMallOrderItemMapper { 17 | int deleteByPrimaryKey(Long orderItemId); 18 | 19 | int insert(NewBeeMallOrderItem record); 20 | 21 | int insertSelective(NewBeeMallOrderItem record); 22 | 23 | NewBeeMallOrderItem selectByPrimaryKey(Long orderItemId); 24 | 25 | /** 26 | * 根据订单id获取订单项列表 27 | * 28 | * @param orderId 29 | * @return 30 | */ 31 | List selectByOrderId(Long orderId); 32 | 33 | /** 34 | * 根据订单ids获取订单项列表 35 | * 36 | * @param orderIds 37 | * @return 38 | */ 39 | List selectByOrderIds(@Param("orderIds") List orderIds); 40 | 41 | /** 42 | * 批量insert订单项数据 43 | * 44 | * @param orderItems 45 | * @return 46 | */ 47 | int insertBatch(@Param("orderItems") List orderItems); 48 | 49 | int updateByPrimaryKeySelective(NewBeeMallOrderItem record); 50 | 51 | int updateByPrimaryKey(NewBeeMallOrderItem record); 52 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallOrderMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.NewBeeMallOrder; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import org.apache.ibatis.annotations.Param; 14 | 15 | import java.util.List; 16 | 17 | public interface NewBeeMallOrderMapper { 18 | int deleteByPrimaryKey(Long orderId); 19 | 20 | int insert(NewBeeMallOrder record); 21 | 22 | int insertSelective(NewBeeMallOrder record); 23 | 24 | NewBeeMallOrder selectByPrimaryKey(Long orderId); 25 | 26 | NewBeeMallOrder selectByOrderNo(String orderNo); 27 | 28 | int updateByPrimaryKeySelective(NewBeeMallOrder record); 29 | 30 | int updateByPrimaryKey(NewBeeMallOrder record); 31 | 32 | List findNewBeeMallOrderList(PageQueryUtil pageUtil); 33 | 34 | int getTotalNewBeeMallOrders(PageQueryUtil pageUtil); 35 | 36 | List selectByPrimaryKeys(@Param("orderIds") List orderIds); 37 | 38 | int checkOut(@Param("orderIds") List orderIds); 39 | 40 | int closeOrder(@Param("orderIds") List orderIds, @Param("orderStatus") int orderStatus); 41 | 42 | int checkDone(@Param("orderIds") List asList); 43 | 44 | List selectPrePayOrders(); 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallSeckillMapper.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.dao; 2 | 3 | import ltd.newbee.mall.entity.NewBeeMallSeckill; 4 | import ltd.newbee.mall.util.PageQueryUtil; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | public interface NewBeeMallSeckillMapper { 10 | int deleteByPrimaryKey(Long seckillId); 11 | 12 | int insert(NewBeeMallSeckill record); 13 | 14 | int insertSelective(NewBeeMallSeckill record); 15 | 16 | NewBeeMallSeckill selectByPrimaryKey(Long seckillId); 17 | 18 | int updateByPrimaryKeySelective(NewBeeMallSeckill record); 19 | 20 | int updateByPrimaryKey(NewBeeMallSeckill record); 21 | 22 | List findSeckillList(PageQueryUtil pageUtil); 23 | 24 | int getTotalSeckills(PageQueryUtil pageUtil); 25 | 26 | List findHomeSeckillList(); 27 | 28 | int getHomeTotalSeckills(PageQueryUtil pageUtil); 29 | 30 | void killByProcedure(Map map); 31 | 32 | boolean addStock(Long seckillId); 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallSeckillSuccessMapper.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.dao; 2 | 3 | import ltd.newbee.mall.entity.NewBeeMallSeckillSuccess; 4 | 5 | public interface NewBeeMallSeckillSuccessMapper { 6 | int deleteByPrimaryKey(Integer secId); 7 | 8 | int insert(NewBeeMallSeckillSuccess record); 9 | 10 | int insertSelective(NewBeeMallSeckillSuccess record); 11 | 12 | NewBeeMallSeckillSuccess selectByPrimaryKey(Long secId); 13 | 14 | int updateByPrimaryKeySelective(NewBeeMallSeckillSuccess record); 15 | 16 | int updateByPrimaryKey(NewBeeMallSeckillSuccess record); 17 | 18 | NewBeeMallSeckillSuccess getSeckillSuccessByUserIdAndSeckillId(Long userId, Long seckillId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallShoppingCartItemMapper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.dao; 10 | 11 | import ltd.newbee.mall.entity.NewBeeMallShoppingCartItem; 12 | import org.apache.ibatis.annotations.Param; 13 | 14 | import java.util.List; 15 | 16 | public interface NewBeeMallShoppingCartItemMapper { 17 | int deleteByPrimaryKey(Long cartItemId); 18 | 19 | int insert(NewBeeMallShoppingCartItem record); 20 | 21 | int insertSelective(NewBeeMallShoppingCartItem record); 22 | 23 | NewBeeMallShoppingCartItem selectByPrimaryKey(Long cartItemId); 24 | 25 | NewBeeMallShoppingCartItem selectByUserIdAndGoodsId(@Param("newBeeMallUserId") Long newBeeMallUserId, @Param("goodsId") Long goodsId); 26 | 27 | List selectByUserId(@Param("newBeeMallUserId") Long newBeeMallUserId, @Param("number") int number); 28 | 29 | int selectCountByUserId(Long newBeeMallUserId); 30 | 31 | int updateByPrimaryKeySelective(NewBeeMallShoppingCartItem record); 32 | 33 | int updateByPrimaryKey(NewBeeMallShoppingCartItem record); 34 | 35 | int deleteBatch(List ids); 36 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/dao/NewBeeMallUserCouponRecordMapper.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.dao; 2 | 3 | import ltd.newbee.mall.entity.NewBeeMallUserCouponRecord; 4 | import ltd.newbee.mall.util.PageQueryUtil; 5 | 6 | import java.util.List; 7 | 8 | public interface NewBeeMallUserCouponRecordMapper { 9 | int deleteByPrimaryKey(Long couponUserId); 10 | 11 | int insert(NewBeeMallUserCouponRecord record); 12 | 13 | int insertSelective(NewBeeMallUserCouponRecord record); 14 | 15 | NewBeeMallUserCouponRecord selectByPrimaryKey(Long couponUserId); 16 | 17 | int updateByPrimaryKeySelective(NewBeeMallUserCouponRecord record); 18 | 19 | int updateByPrimaryKey(NewBeeMallUserCouponRecord record); 20 | 21 | int getUserCouponCount(Long userId, Long couponId); 22 | 23 | int getCouponCount(Long couponId); 24 | 25 | List selectMyCoupons(PageQueryUtil pageQueryUtil); 26 | 27 | Integer countMyCoupons(PageQueryUtil pageQueryUtil); 28 | 29 | List selectMyAvailableCoupons(Long userId); 30 | 31 | NewBeeMallUserCouponRecord getUserCouponByOrderId(Long orderId); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/entity/AdminUser.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.entity; 10 | 11 | public class AdminUser { 12 | private Integer adminUserId; 13 | 14 | private String loginUserName; 15 | 16 | private String loginPassword; 17 | 18 | private String nickName; 19 | 20 | private Byte locked; 21 | 22 | public Integer getAdminUserId() { 23 | return adminUserId; 24 | } 25 | 26 | public void setAdminUserId(Integer adminUserId) { 27 | this.adminUserId = adminUserId; 28 | } 29 | 30 | public String getLoginUserName() { 31 | return loginUserName; 32 | } 33 | 34 | public void setLoginUserName(String loginUserName) { 35 | this.loginUserName = loginUserName == null ? null : loginUserName.trim(); 36 | } 37 | 38 | public String getLoginPassword() { 39 | return loginPassword; 40 | } 41 | 42 | public void setLoginPassword(String loginPassword) { 43 | this.loginPassword = loginPassword == null ? null : loginPassword.trim(); 44 | } 45 | 46 | public String getNickName() { 47 | return nickName; 48 | } 49 | 50 | public void setNickName(String nickName) { 51 | this.nickName = nickName == null ? null : nickName.trim(); 52 | } 53 | 54 | public Byte getLocked() { 55 | return locked; 56 | } 57 | 58 | public void setLocked(Byte locked) { 59 | this.locked = locked; 60 | } 61 | 62 | @Override 63 | public String toString() { 64 | StringBuilder sb = new StringBuilder(); 65 | sb.append(getClass().getSimpleName()); 66 | sb.append(" ["); 67 | sb.append("Hash = ").append(hashCode()); 68 | sb.append(", adminUserId=").append(adminUserId); 69 | sb.append(", loginUserName=").append(loginUserName); 70 | sb.append(", loginPassword=").append(loginPassword); 71 | sb.append(", nickName=").append(nickName); 72 | sb.append(", locked=").append(locked); 73 | sb.append("]"); 74 | return sb.toString(); 75 | } 76 | } -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/entity/NewBeeMallSeckillSuccess.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.entity; 2 | 3 | import java.util.Date; 4 | 5 | public class NewBeeMallSeckillSuccess { 6 | 7 | private Long secId; 8 | 9 | private Long seckillId; 10 | 11 | private Long userId; 12 | 13 | private Byte state; 14 | 15 | private Date createTime; 16 | 17 | public Long getSecId() { 18 | return secId; 19 | } 20 | 21 | public void setSecId(Long secId) { 22 | this.secId = secId; 23 | } 24 | 25 | public Long getSeckillId() { 26 | return seckillId; 27 | } 28 | 29 | public void setSeckillId(Long seckillId) { 30 | this.seckillId = seckillId; 31 | } 32 | 33 | public Long getUserId() { 34 | return userId; 35 | } 36 | 37 | public void setUserId(Long userId) { 38 | this.userId = userId; 39 | } 40 | 41 | public Byte getState() { 42 | return state; 43 | } 44 | 45 | public void setState(Byte state) { 46 | this.state = state; 47 | } 48 | 49 | public Date getCreateTime() { 50 | return createTime; 51 | } 52 | 53 | public void setCreateTime(Date createTime) { 54 | this.createTime = createTime; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/entity/NewBeeMallUserCouponRecord.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.entity; 2 | 3 | import java.util.Date; 4 | 5 | public class NewBeeMallUserCouponRecord { 6 | private Long couponUserId; 7 | 8 | private Long userId; 9 | 10 | private Long couponId; 11 | 12 | private Byte useStatus; 13 | 14 | private Date usedTime; 15 | 16 | private Long orderId; 17 | 18 | private Date createTime; 19 | 20 | private Date updateTime; 21 | 22 | private Byte isDeleted; 23 | 24 | public Long getCouponUserId() { 25 | return couponUserId; 26 | } 27 | 28 | public void setCouponUserId(Long couponUserId) { 29 | this.couponUserId = couponUserId; 30 | } 31 | 32 | public Long getUserId() { 33 | return userId; 34 | } 35 | 36 | public void setUserId(Long userId) { 37 | this.userId = userId; 38 | } 39 | 40 | public Long getCouponId() { 41 | return couponId; 42 | } 43 | 44 | public void setCouponId(Long couponId) { 45 | this.couponId = couponId; 46 | } 47 | 48 | public Byte getUseStatus() { 49 | return useStatus; 50 | } 51 | 52 | public NewBeeMallUserCouponRecord setUseStatus(Byte useStatus) { 53 | this.useStatus = useStatus; 54 | return this; 55 | } 56 | 57 | public Date getUsedTime() { 58 | return usedTime; 59 | } 60 | 61 | public void setUsedTime(Date usedTime) { 62 | this.usedTime = usedTime; 63 | } 64 | 65 | public Long getOrderId() { 66 | return orderId; 67 | } 68 | 69 | public void setOrderId(Long orderId) { 70 | this.orderId = orderId; 71 | } 72 | 73 | public Date getCreateTime() { 74 | return createTime; 75 | } 76 | 77 | public void setCreateTime(Date createTime) { 78 | this.createTime = createTime; 79 | } 80 | 81 | public Date getUpdateTime() { 82 | return updateTime; 83 | } 84 | 85 | public void setUpdateTime(Date updateTime) { 86 | this.updateTime = updateTime; 87 | } 88 | 89 | public Byte getIsDeleted() { 90 | return isDeleted; 91 | } 92 | 93 | public void setIsDeleted(Byte isDeleted) { 94 | this.isDeleted = isDeleted; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/entity/StockNumDTO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.entity; 10 | 11 | /** 12 | * 库存修改所需实体 13 | */ 14 | public class StockNumDTO { 15 | private Long goodsId; 16 | 17 | private Integer goodsCount; 18 | 19 | public Long getGoodsId() { 20 | return goodsId; 21 | } 22 | 23 | public void setGoodsId(Long goodsId) { 24 | this.goodsId = goodsId; 25 | } 26 | 27 | public Integer getGoodsCount() { 28 | return goodsCount; 29 | } 30 | 31 | public void setGoodsCount(Integer goodsCount) { 32 | this.goodsCount = goodsCount; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/exception/NewBeeMallException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.exception; 10 | 11 | public class NewBeeMallException extends RuntimeException { 12 | 13 | public NewBeeMallException() { 14 | } 15 | 16 | public NewBeeMallException(String message) { 17 | super(message); 18 | } 19 | 20 | /** 21 | * 丢出一个异常 22 | * 23 | * @param message 24 | */ 25 | public static void fail(String message) { 26 | throw new NewBeeMallException(message); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/exception/NewBeeMallExceptionHandler.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.exception; 10 | 11 | import jakarta.servlet.http.HttpServletRequest; 12 | import ltd.newbee.mall.util.HttpUtil; 13 | import ltd.newbee.mall.util.Result; 14 | import org.slf4j.Logger; 15 | import org.slf4j.LoggerFactory; 16 | import org.springframework.web.bind.annotation.ExceptionHandler; 17 | import org.springframework.web.bind.annotation.RestControllerAdvice; 18 | import org.springframework.web.servlet.ModelAndView; 19 | 20 | /** 21 | * newbee-mall全局异常处理 22 | */ 23 | @RestControllerAdvice 24 | public class NewBeeMallExceptionHandler { 25 | 26 | public static final Logger log = LoggerFactory.getLogger(NewBeeMallExceptionHandler.class); 27 | 28 | @ExceptionHandler(Exception.class) 29 | public Object handleException(Exception e, HttpServletRequest req) { 30 | Result result = new Result(); 31 | result.setResultCode(500); 32 | // 区分是否为自定义异常 33 | if (e instanceof NewBeeMallException newBeeMallException) { 34 | result.setMessage(newBeeMallException.getMessage()); 35 | } else { 36 | log.error(e.getMessage(), e); 37 | result.setMessage("未知异常"); 38 | } 39 | if (HttpUtil.isAjaxRequest(req)) { 40 | return result; 41 | } 42 | ModelAndView modelAndView = new ModelAndView(); 43 | modelAndView.addObject("message", e.getMessage()); 44 | modelAndView.addObject("url", req.getRequestURL()); 45 | modelAndView.addObject("stackTrace", e.getStackTrace()); 46 | modelAndView.addObject("author", "十三"); 47 | modelAndView.addObject("ltd", "新蜂商城"); 48 | modelAndView.setViewName("error/error"); 49 | return modelAndView; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/AdminUserService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.entity.AdminUser; 12 | 13 | public interface AdminUserService { 14 | 15 | AdminUser login(String userName, String password); 16 | 17 | /** 18 | * 获取用户信息 19 | * 20 | * @param loginUserId 21 | * @return 22 | */ 23 | AdminUser getUserDetailById(Integer loginUserId); 24 | 25 | /** 26 | * 修改当前登录用户的密码 27 | * 28 | * @param loginUserId 29 | * @param originalPassword 30 | * @param newPassword 31 | * @return 32 | */ 33 | Boolean updatePassword(Integer loginUserId, String originalPassword, String newPassword); 34 | 35 | /** 36 | * 修改当前登录用户的名称信息 37 | * 38 | * @param loginUserId 39 | * @param loginUserName 40 | * @param nickName 41 | * @return 42 | */ 43 | Boolean updateName(Integer loginUserId, String loginUserName, String nickName); 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallCarouselService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.controller.vo.NewBeeMallIndexCarouselVO; 12 | import ltd.newbee.mall.entity.Carousel; 13 | import ltd.newbee.mall.util.PageQueryUtil; 14 | import ltd.newbee.mall.util.PageResult; 15 | 16 | import java.util.List; 17 | 18 | public interface NewBeeMallCarouselService { 19 | /** 20 | * 后台分页 21 | * 22 | * @param pageUtil 23 | * @return 24 | */ 25 | PageResult getCarouselPage(PageQueryUtil pageUtil); 26 | 27 | String saveCarousel(Carousel carousel); 28 | 29 | String updateCarousel(Carousel carousel); 30 | 31 | Carousel getCarouselById(Integer id); 32 | 33 | Boolean deleteBatch(Integer[] ids); 34 | 35 | /** 36 | * 返回固定数量的轮播图对象(首页调用) 37 | * 38 | * @param number 39 | * @return 40 | */ 41 | List getCarouselsForIndex(int number); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallCategoryService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.controller.vo.NewBeeMallIndexCategoryVO; 12 | import ltd.newbee.mall.controller.vo.SearchPageCategoryVO; 13 | import ltd.newbee.mall.entity.GoodsCategory; 14 | import ltd.newbee.mall.util.PageQueryUtil; 15 | import ltd.newbee.mall.util.PageResult; 16 | 17 | import java.util.List; 18 | 19 | public interface NewBeeMallCategoryService { 20 | /** 21 | * 后台分页 22 | * 23 | * @param pageUtil 24 | * @return 25 | */ 26 | PageResult getCategorisPage(PageQueryUtil pageUtil); 27 | 28 | String saveCategory(GoodsCategory goodsCategory); 29 | 30 | String updateGoodsCategory(GoodsCategory goodsCategory); 31 | 32 | GoodsCategory getGoodsCategoryById(Long id); 33 | 34 | Boolean deleteBatch(Integer[] ids); 35 | 36 | /** 37 | * 返回分类数据(首页调用) 38 | * 39 | * @return 40 | */ 41 | List getCategoriesForIndex(); 42 | 43 | /** 44 | * 返回分类数据(搜索页调用) 45 | * 46 | * @param categoryId 47 | * @return 48 | */ 49 | SearchPageCategoryVO getCategoriesForSearch(Long categoryId); 50 | 51 | /** 52 | * 根据parentId和level获取分类列表 53 | * 54 | * @param parentIds 55 | * @param categoryLevel 56 | * @return 57 | */ 58 | List selectByLevelAndParentIdsAndNumber(List parentIds, int categoryLevel); 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallCouponService.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.service; 2 | 3 | import ltd.newbee.mall.controller.vo.NewBeeMallCouponVO; 4 | import ltd.newbee.mall.controller.vo.NewBeeMallMyCouponVO; 5 | import ltd.newbee.mall.controller.vo.NewBeeMallShoppingCartItemVO; 6 | import ltd.newbee.mall.entity.NewBeeMallCoupon; 7 | import ltd.newbee.mall.util.PageQueryUtil; 8 | import ltd.newbee.mall.util.PageResult; 9 | 10 | import java.util.List; 11 | 12 | public interface NewBeeMallCouponService { 13 | 14 | PageResult getCouponPage(PageQueryUtil pageUtil); 15 | 16 | boolean saveCoupon(NewBeeMallCoupon newBeeMallCoupon); 17 | 18 | boolean updateCoupon(NewBeeMallCoupon newBeeMallCoupon); 19 | 20 | NewBeeMallCoupon getCouponById(Long id); 21 | 22 | boolean deleteCouponById(Long id); 23 | 24 | /** 25 | * 查询可用优惠券 26 | * 27 | * @param userId 28 | * @return 29 | */ 30 | List selectAvailableCoupon(Long userId); 31 | 32 | /** 33 | * 用户领取优惠劵 34 | * 35 | * @param couponId 优惠劵ID 36 | * @param userId 用户ID 37 | * @return boolean 38 | */ 39 | boolean saveCouponUser(Long couponId, Long userId); 40 | 41 | /** 42 | * 查询我的优惠券 43 | * 44 | * @param userId 用户ID 45 | * @return 46 | */ 47 | PageResult selectMyCoupons(PageQueryUtil pageQueryUtil); 48 | 49 | /** 50 | * 查询当前订单可用的优惠券 51 | * 52 | * @param myShoppingCartItems 53 | * @param priceTotal 54 | * @param userId 55 | * @return 56 | */ 57 | List selectOrderCanUseCoupons(List myShoppingCartItems, int priceTotal, Long userId); 58 | 59 | /** 60 | * 删除用户优惠券 61 | * 62 | * @param couponUserId 63 | * @return 64 | */ 65 | boolean deleteCouponUser(Long couponUserId); 66 | 67 | /** 68 | * 回复未支付的优惠券 69 | * @param orderId 70 | */ 71 | void releaseCoupon(Long orderId); 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallGoodsService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.entity.NewBeeMallGoods; 12 | import ltd.newbee.mall.util.PageQueryUtil; 13 | import ltd.newbee.mall.util.PageResult; 14 | 15 | import java.util.List; 16 | 17 | public interface NewBeeMallGoodsService { 18 | /** 19 | * 后台分页 20 | * 21 | * @param pageUtil 22 | * @return 23 | */ 24 | PageResult getNewBeeMallGoodsPage(PageQueryUtil pageUtil); 25 | 26 | /** 27 | * 添加商品 28 | * 29 | * @param goods 30 | * @return 31 | */ 32 | String saveNewBeeMallGoods(NewBeeMallGoods goods); 33 | 34 | /** 35 | * 批量新增商品数据 36 | * 37 | * @param newBeeMallGoodsList 38 | * @return 39 | */ 40 | void batchSaveNewBeeMallGoods(List newBeeMallGoodsList); 41 | 42 | /** 43 | * 修改商品信息 44 | * 45 | * @param goods 46 | * @return 47 | */ 48 | String updateNewBeeMallGoods(NewBeeMallGoods goods); 49 | 50 | /** 51 | * 获取商品详情 52 | * 53 | * @param id 54 | * @return 55 | */ 56 | NewBeeMallGoods getNewBeeMallGoodsById(Long id); 57 | 58 | /** 59 | * 批量修改销售状态(上架下架) 60 | * 61 | * @param ids 62 | * @return 63 | */ 64 | Boolean batchUpdateSellStatus(Long[] ids,int sellStatus); 65 | 66 | /** 67 | * 商品搜索 68 | * 69 | * @param pageUtil 70 | * @return 71 | */ 72 | PageResult searchNewBeeMallGoods(PageQueryUtil pageUtil); 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallIndexConfigService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.controller.vo.NewBeeMallIndexConfigGoodsVO; 12 | import ltd.newbee.mall.entity.IndexConfig; 13 | import ltd.newbee.mall.util.PageQueryUtil; 14 | import ltd.newbee.mall.util.PageResult; 15 | 16 | import java.util.List; 17 | 18 | public interface NewBeeMallIndexConfigService { 19 | /** 20 | * 后台分页 21 | * 22 | * @param pageUtil 23 | * @return 24 | */ 25 | PageResult getConfigsPage(PageQueryUtil pageUtil); 26 | 27 | String saveIndexConfig(IndexConfig indexConfig); 28 | 29 | String updateIndexConfig(IndexConfig indexConfig); 30 | 31 | IndexConfig getIndexConfigById(Long id); 32 | 33 | /** 34 | * 返回固定数量的首页配置商品对象(首页调用) 35 | * 36 | * @param number 37 | * @return 38 | */ 39 | List getConfigGoodsesForIndex(int configType, int number); 40 | 41 | Boolean deleteBatch(Long[] ids); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallSeckillService.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.service; 2 | 3 | import ltd.newbee.mall.controller.vo.ExposerVO; 4 | import ltd.newbee.mall.controller.vo.SeckillSuccessVO; 5 | import ltd.newbee.mall.entity.NewBeeMallSeckill; 6 | import ltd.newbee.mall.util.PageQueryUtil; 7 | import ltd.newbee.mall.util.PageResult; 8 | 9 | import java.util.List; 10 | 11 | public interface NewBeeMallSeckillService { 12 | 13 | PageResult getSeckillPage(PageQueryUtil pageUtil); 14 | 15 | boolean saveSeckill(NewBeeMallSeckill newBeeMallSeckill); 16 | 17 | boolean updateSeckill(NewBeeMallSeckill newBeeMallSeckill); 18 | 19 | NewBeeMallSeckill getSeckillById(Long id); 20 | 21 | boolean deleteSeckillById(Long id); 22 | 23 | List getHomeSeckillPage(); 24 | 25 | ExposerVO exposerUrl(Long seckillId); 26 | 27 | SeckillSuccessVO executeSeckill(Long seckillId, Long userId); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallShoppingCartService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import ltd.newbee.mall.controller.vo.NewBeeMallShoppingCartItemVO; 12 | import ltd.newbee.mall.entity.NewBeeMallShoppingCartItem; 13 | 14 | import java.util.List; 15 | 16 | public interface NewBeeMallShoppingCartService { 17 | 18 | /** 19 | * 保存商品至购物车中 20 | * 21 | * @param newBeeMallShoppingCartItem 22 | * @return 23 | */ 24 | String saveNewBeeMallCartItem(NewBeeMallShoppingCartItem newBeeMallShoppingCartItem); 25 | 26 | /** 27 | * 修改购物车中的属性 28 | * 29 | * @param newBeeMallShoppingCartItem 30 | * @return 31 | */ 32 | String updateNewBeeMallCartItem(NewBeeMallShoppingCartItem newBeeMallShoppingCartItem); 33 | 34 | /** 35 | * 获取购物项详情 36 | * 37 | * @param newBeeMallShoppingCartItemId 38 | * @return 39 | */ 40 | NewBeeMallShoppingCartItem getNewBeeMallCartItemById(Long newBeeMallShoppingCartItemId); 41 | 42 | /** 43 | * 删除购物车中的商品 44 | * 45 | * 46 | * @param shoppingCartItemId 47 | * @param userId 48 | * @return 49 | */ 50 | Boolean deleteById(Long shoppingCartItemId, Long userId); 51 | 52 | /** 53 | * 获取我的购物车中的列表数据 54 | * 55 | * @param newBeeMallUserId 56 | * @return 57 | */ 58 | List getMyShoppingCartItems(Long newBeeMallUserId); 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallUserCouponRecordService.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.service; 2 | 3 | public interface NewBeeMallUserCouponRecordService { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/NewBeeMallUserService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.service; 10 | 11 | import jakarta.servlet.http.HttpSession; 12 | import ltd.newbee.mall.controller.vo.NewBeeMallUserVO; 13 | import ltd.newbee.mall.entity.MallUser; 14 | import ltd.newbee.mall.util.PageQueryUtil; 15 | import ltd.newbee.mall.util.PageResult; 16 | 17 | public interface NewBeeMallUserService { 18 | /** 19 | * 后台分页 20 | * 21 | * @param pageUtil 22 | * @return 23 | */ 24 | PageResult getNewBeeMallUsersPage(PageQueryUtil pageUtil); 25 | 26 | /** 27 | * 用户注册 28 | * 29 | * @param loginName 30 | * @param password 31 | * @return 32 | */ 33 | String register(String loginName, String password); 34 | 35 | /** 36 | * 登录 37 | * 38 | * @param loginName 39 | * @param passwordMD5 40 | * @param httpSession 41 | * @return 42 | */ 43 | String login(String loginName, String passwordMD5, HttpSession httpSession); 44 | 45 | /** 46 | * 用户信息修改并返回最新的用户信息 47 | * 48 | * @param mallUser 49 | * @return 50 | */ 51 | NewBeeMallUserVO updateUserInfo(MallUser mallUser, HttpSession httpSession); 52 | 53 | /** 54 | * 用户禁用与解除禁用(0-未锁定 1-已锁定) 55 | * 56 | * @param ids 57 | * @param lockStatus 58 | * @return 59 | */ 60 | Boolean lockUsers(Integer[] ids, int lockStatus); 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/service/impl/NewBeeMallUserCouponRecordServiceImpl.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.service.impl; 2 | 3 | import ltd.newbee.mall.service.NewBeeMallUserCouponRecordService; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Service 7 | public class NewBeeMallUserCouponRecordServiceImpl implements NewBeeMallUserCouponRecordService { 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/task/Task.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.task; 2 | 3 | 4 | import java.util.concurrent.Delayed; 5 | import java.util.concurrent.TimeUnit; 6 | 7 | public abstract class Task implements Delayed, Runnable { 8 | private final String id; 9 | private final long start; 10 | 11 | /** 12 | * 13 | * @param id 定时任务ID 14 | * @param delayInMilliseconds 延迟执行时间,单位/毫秒 15 | */ 16 | public Task(String id, long delayInMilliseconds) { 17 | this.id = id; 18 | this.start = System.currentTimeMillis() + delayInMilliseconds; 19 | } 20 | 21 | public String getId() { 22 | return id; 23 | } 24 | 25 | @Override 26 | public long getDelay(TimeUnit unit) { 27 | long diff = this.start - System.currentTimeMillis(); 28 | return unit.convert(diff, TimeUnit.MILLISECONDS); 29 | } 30 | 31 | @Override 32 | public int compareTo(Delayed o) { 33 | return (int) (this.start - ((Task) o).start); 34 | } 35 | 36 | @Override 37 | public boolean equals(Object o) { 38 | if (this == o) return true; 39 | if (o == null) return false; 40 | if (!(o instanceof Task t)) { 41 | return false; 42 | } 43 | return this.id.equals(t.getId()); 44 | } 45 | 46 | @Override 47 | public int hashCode() { 48 | return this.id.hashCode(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/task/TaskService.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.task; 2 | 3 | import jakarta.annotation.PostConstruct; 4 | import org.apache.commons.lang3.concurrent.BasicThreadFactory; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.concurrent.DelayQueue; 8 | import java.util.concurrent.Executors; 9 | import java.util.concurrent.ScheduledExecutorService; 10 | import java.util.concurrent.ScheduledThreadPoolExecutor; 11 | 12 | @Component 13 | public class TaskService { 14 | private final DelayQueue delayQueue = new DelayQueue<>(); 15 | 16 | @PostConstruct 17 | private void init() { 18 | ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1, 19 | new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()); 20 | executorService.execute(() -> { 21 | while (true) { 22 | try { 23 | Task task = delayQueue.take(); 24 | task.run(); 25 | } catch (Exception e) { 26 | e.printStackTrace(); 27 | } 28 | } 29 | }); 30 | } 31 | 32 | public void addTask(Task task) { 33 | if (delayQueue.contains(task)) { 34 | return; 35 | } 36 | delayQueue.add(task); 37 | } 38 | 39 | public void removeTask(Task task) { 40 | delayQueue.remove(task); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/task/TaskStartupRunner.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.task; 2 | 3 | import ltd.newbee.mall.dao.NewBeeMallOrderMapper; 4 | import ltd.newbee.mall.entity.NewBeeMallOrder; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.ApplicationArguments; 7 | import org.springframework.boot.ApplicationRunner; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.time.Instant; 11 | import java.time.LocalDateTime; 12 | import java.time.ZoneId; 13 | import java.time.temporal.ChronoUnit; 14 | import java.util.Date; 15 | import java.util.List; 16 | 17 | /** 18 | * 定时任务脚本,系统启动时检查是否有超时订单 19 | */ 20 | @Component 21 | public class TaskStartupRunner implements ApplicationRunner { 22 | 23 | public static final Long UN_PAID_ORDER_EXPIRE_TIME = 30L; 24 | @Autowired 25 | private NewBeeMallOrderMapper newBeeMallOrderMapper; 26 | @Autowired 27 | private TaskService taskService; 28 | 29 | @Override 30 | public void run(ApplicationArguments args) throws Exception { 31 | List newBeeMallOrders = newBeeMallOrderMapper.selectPrePayOrders(); 32 | for (NewBeeMallOrder order : newBeeMallOrders) { 33 | Date date = order.getCreateTime(); 34 | Instant instant = date.toInstant(); 35 | ZoneId zoneId = ZoneId.systemDefault(); 36 | 37 | LocalDateTime add = instant.atZone(zoneId).toLocalDateTime(); 38 | LocalDateTime now = LocalDateTime.now(); 39 | LocalDateTime expire = add.plusMinutes(UN_PAID_ORDER_EXPIRE_TIME); 40 | if (expire.isBefore(now)) { 41 | // 已经过期,则加入延迟队列立即执行 42 | taskService.addTask(new OrderUnPaidTask(order.getOrderId(), 0)); 43 | } else { 44 | // 还没过期,则加入延迟队列 45 | long delay = ChronoUnit.MILLIS.between(now, expire); 46 | taskService.addTask(new OrderUnPaidTask(order.getOrderId(), delay)); 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/HttpUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | 4 | import jakarta.servlet.http.HttpServletRequest; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | public class HttpUtil { 9 | 10 | private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class); 11 | 12 | /** 13 | * 判断当前请求是否是ajax请求 14 | * 15 | * @param request 请求对象 16 | * @return boolean 17 | */ 18 | public static boolean isAjaxRequest(HttpServletRequest request) { 19 | return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/IOUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.io.ByteArrayOutputStream; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | 7 | public class IOUtil { 8 | 9 | public static byte[] getBytes(InputStream in) throws IOException { 10 | final byte[] temp = new byte[1024]; 11 | int len; 12 | try (ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream()) { 13 | while ((len = in.read(temp)) != 0) { 14 | arrayOutputStream.write(temp, 0, len); 15 | } 16 | return arrayOutputStream.toByteArray(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/JsonUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | 4 | import com.fasterxml.jackson.core.JsonProcessingException; 5 | import com.fasterxml.jackson.databind.ObjectMapper; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * 操作json的封装方法 11 | * use:jackson 12 | */ 13 | public class JsonUtil { 14 | /** 15 | * 将json字符串转换为java对象 16 | * 17 | * @param objClass obj对象所属class类 18 | * @param jsonStr json字符串 19 | * @param 泛型 20 | * @return java对象 21 | */ 22 | public static T jsonToObj(Class objClass, String jsonStr) throws IOException { 23 | ObjectMapper mapper = new ObjectMapper(); 24 | return mapper.readValue(jsonStr, objClass); 25 | } 26 | 27 | /** 28 | * 将obj对象转换为json字符串 29 | * 30 | * @param obj java对象 31 | * @return 字符串 32 | */ 33 | public static String objToJson(Object obj) throws JsonProcessingException { 34 | ObjectMapper mapper = new ObjectMapper(); 35 | return mapper.writeValueAsString(obj); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/MD5Util.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.security.MessageDigest; 4 | 5 | /** 6 | * @author 13 7 | * @qq交流群 791509631 8 | * @email 2449207463@qq.com 9 | * @link https://github.com/newbee-ltd 10 | */ 11 | public class MD5Util { 12 | 13 | private static String byteArrayToHexString(byte[] b) { 14 | StringBuilder resultSb = new StringBuilder(); 15 | for (byte value : b) { 16 | resultSb.append(byteToHexString(value)); 17 | } 18 | return resultSb.toString(); 19 | } 20 | 21 | private static String byteToHexString(byte b) { 22 | int n = b; 23 | if (n < 0) { 24 | n += 256; 25 | } 26 | int d1 = n / 16; 27 | int d2 = n % 16; 28 | return HEX_DIGITS[d1] + HEX_DIGITS[d2]; 29 | } 30 | 31 | public static String MD5Encode(String origin, String charsetname) { 32 | String resultString = null; 33 | try { 34 | resultString = origin; 35 | MessageDigest md = MessageDigest.getInstance("MD5"); 36 | if (charsetname == null || "".equals(charsetname)) { 37 | resultString = byteArrayToHexString(md.digest(resultString.getBytes())); 38 | } else { 39 | resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname))); 40 | } 41 | } catch (Exception ignored) { 42 | } 43 | return resultString; 44 | } 45 | 46 | private static final String[] HEX_DIGITS = {"0", "1", "2", "3", "4", "5", 47 | "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/NewBeeMallUtils.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | import java.net.URI; 6 | 7 | /** 8 | * @author 13 9 | */ 10 | public class NewBeeMallUtils { 11 | 12 | public static URI getHost(URI uri) { 13 | URI effectiveURI; 14 | try { 15 | effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); 16 | } catch (Throwable var4) { 17 | effectiveURI = null; 18 | } 19 | return effectiveURI; 20 | } 21 | 22 | public static String cleanString(String value) { 23 | if (StringUtils.isEmpty(value)) { 24 | return ""; 25 | } 26 | value = value.toLowerCase(); 27 | value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;"); 28 | value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;"); 29 | value = value.replaceAll("'", "& #39;"); 30 | value = value.replaceAll("onload", "0nl0ad"); 31 | value = value.replaceAll("xml", "xm1"); 32 | value = value.replaceAll("window", "wind0w"); 33 | value = value.replaceAll("click", "cl1ck"); 34 | value = value.replaceAll("var", "v0r"); 35 | value = value.replaceAll("let", "1et"); 36 | value = value.replaceAll("function", "functi0n"); 37 | value = value.replaceAll("return", "retu1n"); 38 | value = value.replaceAll("\\$", ""); 39 | value = value.replaceAll("document", "d0cument"); 40 | value = value.replaceAll("const", "c0nst"); 41 | value = value.replaceAll("eval\\((.*)\\)", ""); 42 | value = value.replaceAll("[\"']\\s*javascript:(.*)[\"']", "\"\""); 43 | value = value.replaceAll("script", "scr1pt"); 44 | value = value.replaceAll("insert", "1nsert"); 45 | value = value.replaceAll("drop", "dr0p"); 46 | value = value.replaceAll("create", "cre0ate"); 47 | value = value.replaceAll("update", "upd0ate"); 48 | value = value.replaceAll("alter", "a1ter"); 49 | value = value.replaceAll("from", "fr0m"); 50 | value = value.replaceAll("where", "wh1re"); 51 | value = value.replaceAll("database", "data1base"); 52 | value = value.replaceAll("table", "tab1e"); 53 | value = value.replaceAll("tb", "tb0"); 54 | return value; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/NumberUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * @author 13 8 | * @qq交流群 791509631 9 | * @email 2449207463@qq.com 10 | * @link https://github.com/newbee-ltd 11 | */ 12 | public class NumberUtil { 13 | public static final Pattern PHONE_PATTERN = Pattern.compile("^((13[0-9])|(14[5,7])|(15[^4,\\D])|(17[0-8])|(18[0-9]))\\d{8}$"); 14 | 15 | private NumberUtil() { 16 | } 17 | 18 | 19 | /** 20 | * 判断是否为11位电话号码 21 | * 22 | * @param phone 23 | * @return 24 | */ 25 | public static boolean isPhone(String phone) { 26 | Matcher matcher = PHONE_PATTERN.matcher(phone); 27 | return matcher.matches(); 28 | } 29 | 30 | /** 31 | * 生成指定长度的随机数 32 | * 33 | * @param length 34 | * @return 35 | */ 36 | public static int genRandomNum(int length) { 37 | int num = 1; 38 | double random = Math.random(); 39 | if (random < 0.1) { 40 | random = random + 0.1; 41 | } 42 | for (int i = 0; i < length; i++) { 43 | num = num * 10; 44 | } 45 | return (int) ((random * num)); 46 | } 47 | 48 | /** 49 | * 生成订单流水号 50 | * 51 | * @return 52 | */ 53 | public static String genOrderNo() { 54 | StringBuilder buffer = new StringBuilder(String.valueOf(System.currentTimeMillis())); 55 | int num = genRandomNum(4); 56 | buffer.append(num); 57 | return buffer.toString(); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/PageQueryUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | import java.util.LinkedHashMap; 6 | import java.util.Map; 7 | 8 | /** 9 | * 分页查询参数 10 | * 11 | * @author 13 12 | * @qq交流群 791509631 13 | * @email 2449207463@qq.com 14 | * @link https://github.com/newbee-ltd 15 | */ 16 | public class PageQueryUtil extends LinkedHashMap { 17 | // 当前页码 18 | private int page; 19 | // 每页条数 20 | private int limit; 21 | private String sidx; 22 | private String order; 23 | 24 | public PageQueryUtil(Map params) { 25 | this.putAll(params); 26 | 27 | // 分页参数 28 | this.page = Integer.parseInt(params.get("page").toString()); 29 | this.limit = Integer.parseInt(params.get("limit").toString()); 30 | this.put("start", (page - 1) * limit); 31 | this.put("page", page); 32 | this.put("limit", limit); 33 | this.sidx = (String) params.get("sidx"); 34 | this.order = (String) params.get("order"); 35 | if (StringUtils.isNotBlank(sidx) && StringUtils.isNotEmpty(order)) { 36 | this.put("sortField", this.sidx.replaceAll("[A-Z]", "_$0").toLowerCase()); 37 | this.put("order", order); 38 | } 39 | } 40 | 41 | 42 | public int getPage() { 43 | return page; 44 | } 45 | 46 | public void setPage(int page) { 47 | this.page = page; 48 | } 49 | 50 | public int getLimit() { 51 | return limit; 52 | } 53 | 54 | public void setLimit(int limit) { 55 | this.limit = limit; 56 | } 57 | 58 | public String getSidx() { 59 | return sidx; 60 | } 61 | 62 | public void setSidx(String sidx) { 63 | this.sidx = sidx; 64 | } 65 | 66 | public String getOrder() { 67 | return order; 68 | } 69 | 70 | public void setOrder(String order) { 71 | this.order = order; 72 | } 73 | 74 | @Override 75 | public String toString() { 76 | return "PageQueryUtil{" + 77 | "page=" + page + 78 | ", limit=" + limit + 79 | ", sidx='" + sidx + '\'' + 80 | ", order='" + order + '\'' + 81 | "} " + super.toString(); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/PageResult.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | /** 7 | * 分页工具类 8 | * 9 | * @author 13 10 | * @qq交流群 791509631 11 | * @email 2449207463@qq.com 12 | * @link https://github.com/newbee-ltd 13 | */ 14 | public class PageResult implements Serializable { 15 | 16 | //总记录数 17 | private int totalCount; 18 | //每页记录数 19 | private int pageSize; 20 | //总页数 21 | private int totalPage; 22 | //当前页数 23 | private int currPage; 24 | //列表数据 25 | private List list; 26 | 27 | /** 28 | * 分页 29 | * 30 | * @param list 列表数据 31 | * @param totalCount 总记录数 32 | * @param pageSize 每页记录数 33 | * @param currPage 当前页数 34 | */ 35 | public PageResult(List list, int totalCount, int pageSize, int currPage) { 36 | this.list = list; 37 | this.totalCount = totalCount; 38 | this.pageSize = pageSize; 39 | this.currPage = currPage; 40 | this.totalPage = (int) Math.ceil((double) totalCount / pageSize); 41 | } 42 | 43 | public int getTotalCount() { 44 | return totalCount; 45 | } 46 | 47 | public void setTotalCount(int totalCount) { 48 | this.totalCount = totalCount; 49 | } 50 | 51 | public int getPageSize() { 52 | return pageSize; 53 | } 54 | 55 | public void setPageSize(int pageSize) { 56 | this.pageSize = pageSize; 57 | } 58 | 59 | public int getTotalPage() { 60 | return totalPage; 61 | } 62 | 63 | public void setTotalPage(int totalPage) { 64 | this.totalPage = totalPage; 65 | } 66 | 67 | public int getCurrPage() { 68 | return currPage; 69 | } 70 | 71 | public void setCurrPage(int currPage) { 72 | this.currPage = currPage; 73 | } 74 | 75 | public List getList() { 76 | return list; 77 | } 78 | 79 | public void setList(List list) { 80 | this.list = list; 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/PatternUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * 正则工具类 8 | * 9 | * @author 13 10 | * @qq交流群 791509631 11 | * @email 2449207463@qq.com 12 | * @link https://github.com/newbee-ltd 13 | */ 14 | public class PatternUtil { 15 | 16 | /** 17 | * 匹配邮箱正则 18 | */ 19 | private static final Pattern VALID_EMAIL_ADDRESS_REGEX = 20 | Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); 21 | 22 | /** 23 | * 验证只包含中英文和数字的字符串 24 | * 25 | * @param keyword 26 | * @return 27 | */ 28 | public static Boolean validKeyword(String keyword) { 29 | String regex = "^[a-zA-Z0-9一-龥]+$"; 30 | Pattern pattern = Pattern.compile(regex); 31 | Matcher match = pattern.matcher(keyword); 32 | return match.matches(); 33 | } 34 | 35 | 36 | /** 37 | * 判断是否是邮箱 38 | * 39 | * @param emailStr 40 | * @return 41 | */ 42 | public static boolean isEmail(String emailStr) { 43 | Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr); 44 | return matcher.find(); 45 | } 46 | 47 | /** 48 | * 判断是否是网址 49 | * 50 | * @param urlString 51 | * @return 52 | */ 53 | public static boolean isURL(String urlString) { 54 | String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~/])+(\\??(([A-Za-z0-9-~]+=?)([A-Za-z0-9-~]*)&?)*)$"; 55 | Pattern pattern = Pattern.compile(regex); 56 | return pattern.matcher(urlString).matches(); 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/Result.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.io.Serial; 4 | import java.io.Serializable; 5 | 6 | /** 7 | * @author 13 8 | * @qq交流群 791509631 9 | * @email 2449207463@qq.com 10 | * @link https://github.com/newbee-ltd 11 | */ 12 | public class Result implements Serializable { 13 | @Serial 14 | private static final long serialVersionUID = 1L; 15 | private int resultCode; 16 | private String message; 17 | private T data; 18 | 19 | public Result() { 20 | } 21 | 22 | public Result(int resultCode, String message) { 23 | this.resultCode = resultCode; 24 | this.message = message; 25 | } 26 | 27 | public int getResultCode() { 28 | return resultCode; 29 | } 30 | 31 | public void setResultCode(int resultCode) { 32 | this.resultCode = resultCode; 33 | } 34 | 35 | public String getMessage() { 36 | return message; 37 | } 38 | 39 | public void setMessage(String message) { 40 | this.message = message; 41 | } 42 | 43 | public T getData() { 44 | return data; 45 | } 46 | 47 | public void setData(T data) { 48 | this.data = data; 49 | } 50 | 51 | @Override 52 | public String toString() { 53 | return "Result{" + 54 | "resultCode=" + resultCode + 55 | ", message='" + message + '\'' + 56 | ", data=" + data + 57 | '}'; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/ResultGenerator.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import ltd.newbee.mall.common.ServiceResultEnum; 4 | import org.apache.commons.lang3.StringUtils; 5 | 6 | /** 7 | * 响应结果生成工具 8 | * 9 | * @author 13 10 | * @qq交流群 791509631 11 | * @email 2449207463@qq.com 12 | * @link https://github.com/newbee-ltd 13 | */ 14 | public class ResultGenerator { 15 | private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS"; 16 | private static final String DEFAULT_FAIL_MESSAGE = "FAIL"; 17 | private static final int RESULT_CODE_SUCCESS = 200; 18 | private static final int RESULT_CODE_SERVER_ERROR = 500; 19 | 20 | public static Result genSuccessResult() { 21 | Result result = new Result(); 22 | result.setResultCode(RESULT_CODE_SUCCESS); 23 | result.setMessage(DEFAULT_SUCCESS_MESSAGE); 24 | return result; 25 | } 26 | 27 | public static Result genSuccessResult(String message) { 28 | Result result = new Result(); 29 | result.setResultCode(RESULT_CODE_SUCCESS); 30 | result.setMessage(message); 31 | return result; 32 | } 33 | 34 | public static Result genSuccessResult(Object data) { 35 | Result result = new Result(); 36 | result.setResultCode(RESULT_CODE_SUCCESS); 37 | result.setMessage(DEFAULT_SUCCESS_MESSAGE); 38 | result.setData(data); 39 | return result; 40 | } 41 | 42 | public static Result genFailResult(String message) { 43 | Result result = new Result(); 44 | result.setResultCode(RESULT_CODE_SERVER_ERROR); 45 | if (StringUtils.isEmpty(message)) { 46 | result.setMessage(DEFAULT_FAIL_MESSAGE); 47 | } else { 48 | result.setMessage(message); 49 | } 50 | return result; 51 | } 52 | 53 | public static Result genErrorResult(int code, String message) { 54 | Result result = new Result(); 55 | result.setResultCode(code); 56 | result.setMessage(message); 57 | return result; 58 | } 59 | 60 | public static Result genDmlResult(boolean result) { 61 | return result ? genSuccessResult() : genFailResult(ServiceResultEnum.DB_ERROR.getResult()); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/util/SystemUtil.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.util; 2 | 3 | import java.math.BigInteger; 4 | import java.security.MessageDigest; 5 | 6 | /** 7 | * @author 13 8 | * @qq交流群 791509631 9 | * @email 2449207463@qq.com 10 | * @link https://github.com/newbee-ltd 11 | */ 12 | public class SystemUtil { 13 | 14 | private SystemUtil() { 15 | } 16 | 17 | 18 | /** 19 | * 登录或注册成功后,生成保持用户登录状态会话token值 20 | * 21 | * @param src:为用户最新一次登录时的now()+user.id+random(4) 22 | * @return 23 | */ 24 | public static String genToken(String src) { 25 | if (null == src || "".equals(src)) { 26 | return null; 27 | } 28 | try { 29 | MessageDigest md = MessageDigest.getInstance("MD5"); 30 | md.update(src.getBytes()); 31 | String result = new BigInteger(1, md.digest()).toString(16); 32 | if (result.length() == 31) { 33 | result = result + "-"; 34 | } 35 | System.out.println(result); 36 | return result; 37 | } catch (Exception e) { 38 | return null; 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/web/filter/XssFilter.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.web.filter; 2 | 3 | 4 | import jakarta.servlet.*; 5 | import jakarta.servlet.http.HttpServletRequest; 6 | import jakarta.servlet.http.HttpServletResponse; 7 | import org.apache.commons.lang3.StringUtils; 8 | 9 | import java.io.IOException; 10 | import java.util.ArrayList; 11 | import java.util.Arrays; 12 | import java.util.List; 13 | import java.util.regex.Matcher; 14 | import java.util.regex.Pattern; 15 | 16 | /** 17 | * 防止XSS攻击的过滤器 18 | */ 19 | public class XssFilter implements Filter { 20 | /** 21 | * 排除链接 22 | */ 23 | public List excludes = new ArrayList<>(); 24 | 25 | @Override 26 | public void init(FilterConfig filterConfig) throws ServletException { 27 | String tempExcludes = filterConfig.getInitParameter("excludes"); 28 | if (StringUtils.isNotEmpty(tempExcludes)) { 29 | String[] url = tempExcludes.split(","); 30 | excludes.addAll(Arrays.asList(url)); 31 | } 32 | } 33 | 34 | @Override 35 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 36 | throws IOException, ServletException { 37 | HttpServletRequest req = (HttpServletRequest) request; 38 | HttpServletResponse resp = (HttpServletResponse) response; 39 | if (handleExcludeURL(req, resp)) { 40 | chain.doFilter(request, response); 41 | return; 42 | } 43 | XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request); 44 | chain.doFilter(xssRequest, response); 45 | } 46 | 47 | private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) { 48 | String method = request.getMethod(); 49 | // GET DELETE 不过滤 50 | if (method == null || StringUtils.equalsIgnoreCase(method, "GET") || StringUtils.equalsIgnoreCase(method, "DELETE")) { 51 | return true; 52 | } 53 | String uri = request.getServletPath(); 54 | for (String pattern : excludes) { 55 | Pattern p = Pattern.compile("^" + pattern); 56 | Matcher m = p.matcher(uri); 57 | if (m.find()) { 58 | return true; 59 | } 60 | } 61 | return false; 62 | } 63 | 64 | @Override 65 | public void destroy() { 66 | 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/web/filter/XssHttpServletRequestWrapper.java: -------------------------------------------------------------------------------- 1 | package ltd.newbee.mall.web.filter; 2 | 3 | import jakarta.servlet.http.HttpServletRequest; 4 | import jakarta.servlet.http.HttpServletRequestWrapper; 5 | import org.apache.commons.text.StringEscapeUtils; 6 | 7 | import java.io.IOException; 8 | 9 | public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { 10 | private byte[] body; 11 | 12 | 13 | public XssHttpServletRequestWrapper(HttpServletRequest request) throws IOException { 14 | super(request); 15 | } 16 | 17 | @Override 18 | public String getQueryString() { 19 | return StringEscapeUtils.escapeHtml4(super.getQueryString()); 20 | } 21 | 22 | @Override 23 | public String getParameter(String name) { 24 | return StringEscapeUtils.escapeHtml4(super.getParameter(name)); 25 | } 26 | 27 | @Override 28 | public String[] getParameterValues(String name) { 29 | String[] values = super.getParameterValues(name); 30 | if (values != null) { 31 | int length = values.length; 32 | String[] escapeValues = new String[length]; 33 | for (int i = 0; i < length; i++) { 34 | // 防xss攻击和过滤前后空格 35 | escapeValues[i] = StringEscapeUtils.escapeHtml4(values[i]).trim(); 36 | } 37 | return escapeValues; 38 | } 39 | return super.getParameterValues(name); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/web/interceptor/AdminLoginInterceptor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.web.interceptor; 10 | 11 | import jakarta.servlet.http.HttpServletRequest; 12 | import jakarta.servlet.http.HttpServletResponse; 13 | import org.springframework.stereotype.Component; 14 | import org.springframework.web.servlet.HandlerInterceptor; 15 | import org.springframework.web.servlet.ModelAndView; 16 | 17 | /** 18 | * 后台系统身份验证拦截器 19 | * 20 | * @author 13 21 | * @qq交流群 791509631 22 | * @email 2449207463@qq.com 23 | * @link https://github.com/newbee-ltd 24 | */ 25 | @Component 26 | public class AdminLoginInterceptor implements HandlerInterceptor { 27 | 28 | @Override 29 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { 30 | String requestServletPath = request.getServletPath(); 31 | if (requestServletPath.startsWith("/admin") && null == request.getSession().getAttribute("loginUser")) { 32 | request.getSession().setAttribute("errorMsg", "请登陆"); 33 | response.sendRedirect(request.getContextPath() + "/admin/login"); 34 | return false; 35 | } else { 36 | request.getSession().removeAttribute("errorMsg"); 37 | return true; 38 | } 39 | } 40 | 41 | @Override 42 | public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 43 | } 44 | 45 | @Override 46 | public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 47 | 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/web/interceptor/NewBeeMallCartNumberInterceptor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.web.interceptor; 10 | 11 | import jakarta.servlet.http.HttpServletRequest; 12 | import jakarta.servlet.http.HttpServletResponse; 13 | import ltd.newbee.mall.common.Constants; 14 | import ltd.newbee.mall.controller.vo.NewBeeMallUserVO; 15 | import ltd.newbee.mall.dao.NewBeeMallShoppingCartItemMapper; 16 | import org.springframework.beans.factory.annotation.Autowired; 17 | import org.springframework.stereotype.Component; 18 | import org.springframework.web.servlet.HandlerInterceptor; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | /** 22 | * newbee-mall购物车数量处理 23 | * 24 | * @author 13 25 | * @qq交流群 791509631 26 | * @email 2449207463@qq.com 27 | * @link https://github.com/newbee-ltd 28 | */ 29 | @Component 30 | public class NewBeeMallCartNumberInterceptor implements HandlerInterceptor { 31 | 32 | @Autowired 33 | private NewBeeMallShoppingCartItemMapper newBeeMallShoppingCartItemMapper; 34 | 35 | @Override 36 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { 37 | //购物车中的数量会更改,但是在这些接口中并没有对session中的数据做修改,这里统一处理一下 38 | if (null != request.getSession() && null != request.getSession().getAttribute(Constants.MALL_USER_SESSION_KEY)) { 39 | //如果当前为登陆状态,就查询数据库并设置购物车中的数量值 40 | NewBeeMallUserVO newBeeMallUserVO = (NewBeeMallUserVO) request.getSession().getAttribute(Constants.MALL_USER_SESSION_KEY); 41 | //设置购物车中的数量 42 | newBeeMallUserVO.setShopCartItemCount(newBeeMallShoppingCartItemMapper.selectCountByUserId(newBeeMallUserVO.getUserId())); 43 | request.getSession().setAttribute(Constants.MALL_USER_SESSION_KEY, newBeeMallUserVO); 44 | } 45 | return true; 46 | } 47 | 48 | @Override 49 | public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 50 | } 51 | 52 | @Override 53 | public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/ltd/newbee/mall/web/interceptor/NewBeeMallLoginInterceptor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 严肃声明: 3 | * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究! 4 | * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护! 5 | * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究! 6 | * Copyright (c) 2019-2020 十三 all rights reserved. 7 | * 版权所有,侵权必究! 8 | */ 9 | package ltd.newbee.mall.web.interceptor; 10 | 11 | import jakarta.servlet.http.HttpServletRequest; 12 | import jakarta.servlet.http.HttpServletResponse; 13 | import ltd.newbee.mall.common.Constants; 14 | import org.springframework.stereotype.Component; 15 | import org.springframework.web.servlet.HandlerInterceptor; 16 | import org.springframework.web.servlet.ModelAndView; 17 | 18 | /** 19 | * newbee-mall系统身份验证拦截器 20 | * 21 | * @author 13 22 | * @qq交流群 791509631 23 | * @email 2449207463@qq.com 24 | * @link https://github.com/newbee-ltd 25 | */ 26 | @Component 27 | public class NewBeeMallLoginInterceptor implements HandlerInterceptor { 28 | 29 | @Override 30 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { 31 | // 秒杀请求放过(压力测试使用) 32 | if (request.getRequestURI().startsWith("/seckillExecution")) { 33 | return true; 34 | } 35 | if (null == request.getSession().getAttribute(Constants.MALL_USER_SESSION_KEY)) { 36 | response.sendRedirect(request.getContextPath() + "/login"); 37 | return false; 38 | } else { 39 | return true; 40 | } 41 | } 42 | 43 | @Override 44 | public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 45 | } 46 | 47 | @Override 48 | public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | # 数据源配置 2 | spring: 3 | datasource: 4 | name: newbee-mall-datasource 5 | driverClassName: com.mysql.cj.jdbc.Driver 6 | url: jdbc:mysql://127.0.0.1:3306/newbee_mall_plus_db?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true 7 | username: root 8 | password: 123456 9 | hikari: 10 | pool-name: hikariCP 11 | minimum-idle: 20 12 | maximum-pool-size: 50 13 | auto-commit: true 14 | idle-timeout: 10000 15 | max-lifetime: 30000 16 | connection-timeout: 30000 17 | connection-test-query: SELECT 1 18 | data: 19 | redis: 20 | host: 127.0.0.1 21 | port: 6379 22 | database: 0 23 | password: 24 | connect-timeout: 5000ms 25 | timeout: 5000ms 26 | client-type: lettuce 27 | -------------------------------------------------------------------------------- /src/main/resources/application-prod.yml: -------------------------------------------------------------------------------- 1 | # 数据源配置 2 | spring: 3 | datasource: 4 | name: newbee-mall-datasource 5 | driverClassName: com.mysql.cj.jdbc.Driver 6 | url: jdbc:mysql://127.0.0.1:3306/newbee_mall_plus_db?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true 7 | username: root 8 | password: 123456 9 | hikari: 10 | pool-name: hikariCP 11 | minimum-idle: 100 12 | maximum-pool-size: 200 13 | auto-commit: true 14 | idle-timeout: 10000 15 | max-lifetime: 30000 16 | connection-timeout: 30000 17 | connection-test-query: SELECT 1 18 | redis: 19 | host: 127.0.0.1 20 | port: 6379 21 | password: 22 | timeout: 5000ms 23 | connect-timeout: 5000ms 24 | expire: 400 25 | client-type: lettuce 26 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # author 13 2 | # qq-group 791509631 3 | # email 2449207463@qq.com 4 | # link https://github.com/newbee-ltd 5 | 6 | # 服务器配置 7 | server: 8 | port: 28079 9 | undertow: 10 | buffer-size: 1024 11 | direct-buffers: true 12 | threads: 13 | io: 16 14 | worker: 256 15 | servlet: 16 | session: 17 | tracking-modes: cookie 18 | 19 | # 项目全局配置 20 | project: 21 | # 项目名称 22 | name: newbee-mall-plus 23 | # 上传文件的默认url前缀,根据部署设置自行修改,windows下路径 24 | fileUploadPath: D:\\upload\\ 25 | # 订单未支付超期时间,单位秒 26 | orderUnpaidOverTime: 300 27 | # 服务器地址 28 | serverUrl: http://localhost:28079 29 | 30 | # 防止XSS攻击 31 | xss: 32 | # 过滤开关 33 | enabled: true 34 | # 排除链接(多个用逗号分隔) 35 | excludes: 36 | # 匹配链接 37 | urlPatterns: /admin/*, 38 | 39 | # spring配置 40 | spring: 41 | thymeleaf: 42 | cache: false 43 | jackson: 44 | date-format: yyyy-MM-dd HH:mm:ss 45 | time-zone: GMT+8 46 | profiles: 47 | active: dev 48 | session: 49 | timeout: 3600S 50 | redis: 51 | namespace: newbee-mall-plus:session 52 | 53 | # mybatis配置 54 | mybatis: 55 | # mapper映射文件位置 56 | mapper-locations: classpath:mapper/*Mapper.xml 57 | 58 | # xml 文件热加载 59 | mybatis-xml-reload: 60 | enabled: false 61 | mapper-locations: classpath:mapper/*Mapper.xml 62 | 63 | # alipay 需要自行申请支付宝的沙箱账号、申请appID,并依次配置AppID、密钥、公钥,否则无法发起支付宝支付。 64 | alipay: 65 | app-id: 66 | rsa-private-key: 67 | alipay-public_key: 68 | gateway: https://openapi.alipaydev.com/gateway.do 69 | charset: UTF-8 70 | format: json 71 | log-path: D://newbee-mall-plus//log 72 | signtype: RSA2 73 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/css/main.css: -------------------------------------------------------------------------------- 1 | html { overflow-x:hidden; } 2 | .content-header { 3 | position: relative; 4 | padding: 0 0 3px 8px 5 | } 6 | 7 | .content-header>.breadcrumb { 8 | position: relative; 9 | top: 0; 10 | right: 0; 11 | float: none; 12 | margin-top: 0px; 13 | padding-left: 10px; 14 | background: #ecf0f5; 15 | } 16 | 17 | .main-footer { 18 | padding: 7px; 19 | color: #444; 20 | border-top: 1px solid #eee; 21 | } 22 | 23 | [v-cloak] { 24 | display: none; 25 | } 26 | 27 | .grid-btn{ 28 | margin-bottom:12px; 29 | display:flex; 30 | } 31 | .grid-btn .btn{ 32 | margin-right:10px; 33 | } 34 | .pointer{cursor: pointer;} 35 | 36 | .ml-10 { margin-left:0 !important; } 37 | @media (min-width: 768px) { 38 | .ml-10 { margin-left:10px !important; } 39 | .col-sm-10 {width: 70%;padding-left: 0px;} 40 | .col-sm-2 {width: 24%;} 41 | } 42 | tbody > tr > th {font-weight: normal; } 43 | .panel .table { margin:0 0; } 44 | .panel .pagination { margin:0; } 45 | .panel-default>.panel-heading {background-color: #f5f5f5;} 46 | .container-fluid > row{ 47 | border-top: 1px solid #ddd; 48 | margin:0; 49 | padding:20px 2px 0px 2px; 50 | } 51 | .col-xs-6{padding-left: 0px;padding-right: 0px;} 52 | .form-horizontal .form-group {margin-left:0px;margin-right:0px;} 53 | .form-horizontal{ 54 | width:550px;padding-top:20px; 55 | } 56 | 57 | .dropdown-donate-lg { 58 | min-width: 120px; 59 | max-width: 120px; 60 | padding: 0; 61 | } 62 | 63 | ul.thumbnails.image_picker_selector { 64 | overflow: auto; 65 | list-style-image: none; 66 | list-style-position: outside; 67 | list-style-type: none; 68 | padding: 0px; 69 | margin: 0px; } 70 | ul.thumbnails.image_picker_selector li { 71 | margin: 0px 12px 12px 0px; 72 | float: left; } 73 | ul.thumbnails.image_picker_selector li .thumbnail { 74 | padding: 6px; 75 | border: 1px solid #dddddd; } 76 | ul.thumbnails.image_picker_selector li .thumbnail.selected { 77 | background: #0088cc; } 78 | 79 | #search-form { 80 | padding: 15px 0 0 10px; 81 | } 82 | 83 | #search-form > div { 84 | margin-left: 12px; 85 | } 86 | 87 | #search-form > button { 88 | margin-left: 8px; 89 | } 90 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/AdminLTELogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/AdminLTELogo.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/boxed-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/boxed-bg.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/boxed-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/boxed-bg.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/default-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/default-150x150.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/icons.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/img-upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/img-upload.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/newbee-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/newbee-logo.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/newbee-mall-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/newbee-mall-logo.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/img/no-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/img/no-img.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.min.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.min.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-grid.min.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.min.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.min.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap-reboot.min.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.min.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.min.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/css/bootstrap.min.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.js.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.js.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.min.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.min.js.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.bundle.min.js.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.js.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.js.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.min.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.min.js.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/bootstrap/js/bootstrap.min.js.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.css.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/css/font-awesome.min.css -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.svg -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/core.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/core.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.min.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.min.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.min.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.min.js -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.min.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/dist/js/plugins/jquery/jquery.slim.min.map -------------------------------------------------------------------------------- /src/main/resources/static/admin/dist/js/test.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | new AjaxUpload('#uploadButton', { 3 | action: '/admin/upload/file', 4 | name: 'file', 5 | autoSubmit: true, 6 | responseType: "json", 7 | onSubmit: function (file, extension) { 8 | if (!(extension && /^(jpg|jpeg|png|gif)$/.test(extension.toLowerCase()))) { 9 | alert('只支持jpg、png、gif格式的文件!'); 10 | return false; 11 | } 12 | }, 13 | onComplete: function (file, r) { 14 | if (r != null && r.resultCode == 200) { 15 | console.log(r.data); 16 | $("#img").attr("src", r.data); 17 | $("#img").attr("style", "width: 100px;display:block;"); 18 | return false; 19 | } else { 20 | alert("error"); 21 | } 22 | } 23 | }); 24 | }); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/admin/plugins/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/jqgrid/ui.jqgrid-bootstrap-ui.css: -------------------------------------------------------------------------------- 1 | /* 2 | To change this license header, choose License Headers in Project Properties. 3 | To change this template file, choose Tools | Templates 4 | and open the template in the editor. 5 | */ 6 | /* 7 | Created on : Mar 16, 2015, 10:24:01 AM 8 | Author : tony 9 | */ 10 | 11 | .ui-jqgrid tr.jqgrow td { height: 26px;} 12 | .ui-jqgrid .ui-pg-input,.ui-jqgrid .ui-jqgrid-toppager .ui-pg-input { height:20px } 13 | .ui-state-hover 14 | { 15 | border: .15em solid; 16 | border-color: inherit; 17 | 18 | } 19 | .ui-jqdialog .ui-jqdialog-titlebar { 20 | height:29px; 21 | border-color: inherit; 22 | } 23 | 24 | .ui-jqdialog-content input.FormElement { 25 | padding: 0.25em; 26 | } 27 | 28 | .fm-button { 29 | height:30px; 30 | } 31 | #nData, #pData { height:20px; width:18px; } -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/az.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/bg.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/cs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"התוצאות לא נטענו בהלכה"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק "+t+" תווים";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס "+t+" תווים או יותר";return n},loadingMore:function(){return"טען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור רק "+e.maximum+" פריטים";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%100>9&&e%100<21||e%10===0?e%10>1?n:r:t}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"ių","ius","į"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"ių","ius","į"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ų","us","ą"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t="Er kunnen maar "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t+=" worden geselecteerd",t},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maxiumum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să introduceți mai puțin de "+t;return n+=" caracter",n!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți incă "+t;return n+=" caracter",n!==1&&(n+="e"),n},loadingMore:function(){return"Se încarcă…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",t!==1&&(t+="e"),t},noResults:function(){return"Nu a fost găsit nimic"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/sk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/sr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/plugins/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/mall/css/common.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | text-decoration: none; 5 | list-style-type: none; 6 | font-family: Microsoft Yahei; 7 | } 8 | @media screen and (max-width: 1225px) { 9 | body { 10 | width: 1226px; 11 | } 12 | } 13 | img { 14 | border: none; 15 | max-width: 100%; 16 | max-height: 100%; 17 | } 18 | a { 19 | border: none; 20 | text-decoration: none; 21 | color: #000; 22 | } 23 | .border { 24 | border: 1px solid #f00; 25 | } 26 | .center { 27 | margin: 0 auto; 28 | } 29 | .w { 30 | width: 1226px; 31 | margin: 0 auto; 32 | } 33 | .fl { 34 | float: left; 35 | } 36 | .fr { 37 | float: right; 38 | } 39 | .clear { 40 | clear: both; 41 | } 42 | .clearfix::after { 43 | content: ""; 44 | height: 0; 45 | display: block; 46 | clear: both; 47 | visibility: hidden; 48 | } 49 | .mt20 { 50 | margin-top: 20px; 51 | } 52 | .mt10 { 53 | margin-top: 10px; 54 | } 55 | .ml20 { 56 | margin-left: 20px; 57 | } 58 | .ml40 { 59 | margin-left: 40px; 60 | } 61 | .mr40 { 62 | margin-right: 40px; 63 | } 64 | .mb20 { 65 | margin-bottom: 20px; 66 | } 67 | .border2 { 68 | border: 2px solid #ff6700; 69 | } 70 | .ft20 { 71 | font-size: 20px; 72 | } 73 | .ftbc { 74 | color: #ff6700; 75 | font-weight: bold; 76 | } 77 | .pr { 78 | padding-right: 40px; 79 | } 80 | .h3 { 81 | font-size: 22px; 82 | font-weight: bold; 83 | } 84 | -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/iconfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/iconfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/iconfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/mall/fonts/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/fonts/iconfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/7d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/7d.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/card.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/close.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/donate.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/hua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/hua.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/icon-coupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/icon-coupon.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/icon-seckill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/icon-seckill.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/ji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/ji.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/login-logo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/login-logo-2.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/login_bg.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/new-bee-logo-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/new-bee-logo-3.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/null-content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/null-content.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/alipay_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/alipay_logo.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/alipay_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/alipay_qrcode.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_gdyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_gdyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_gfyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_gfyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_gsyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_gsyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_jiangsshuyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_jiangsshuyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_jsyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_jsyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_jtyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_jtyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_nyyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_nyyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_pufa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_pufa.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_shncsyyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_shncsyyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_xyyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_xyyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_youzheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_youzheng.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_zfb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_zfb.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_zgyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_zgyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_zsyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_zsyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/payOnline_zxyh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/payOnline_zxyh.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/scan-alipay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/scan-alipay.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/scan-wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/scan-wx.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/unionpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/unionpay.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/wave-repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/wave-repeat.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/weixinpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/weixinpay.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/wx_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/wx_logo.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/pay/wxpay_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/pay/wxpay_qrcode.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/right-@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/right-@1x.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/search-cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/search-cart.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/search.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/air.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/air.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/baby-car.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/baby-car.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/headphones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/headphones.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/hot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/hot1.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/hot2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/hot2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/hot3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/hot3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/hot4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/hot4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/m6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/m6.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/pc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/pc.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r5.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/sub_banner/r6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/sub_banner/r6.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/swiper/banner01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/swiper/banner01.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/swiper/banner02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/swiper/banner02.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/swiper/banner03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/swiper/banner03.jpg -------------------------------------------------------------------------------- /src/main/resources/static/mall/image/tel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/src/main/resources/static/mall/image/tel.png -------------------------------------------------------------------------------- /src/main/resources/static/mall/js/detail.js: -------------------------------------------------------------------------------- 1 | var newbeeSwiper = new Swiper('.swiper-container', { 2 | //设置自动播放 3 | autoplay: { 4 | delay: 3000, 5 | disableOnInteraction: false 6 | }, 7 | //设置无限循环播放 8 | loop: true, 9 | //设置圆点指示器 10 | pagination: { 11 | el: '.swiper-pagination', 12 | }, 13 | //设置上下页按钮 14 | navigation: { 15 | nextEl: '.swiper-button-next', 16 | prevEl: '.swiper-button-prev', 17 | } 18 | }) -------------------------------------------------------------------------------- /src/main/resources/static/mall/js/index.js: -------------------------------------------------------------------------------- 1 | var newbeeSwiper = new Swiper('.swiper-container', { 2 | //设置自动播放 3 | autoplay: { 4 | delay: 2000, 5 | disableOnInteraction: false 6 | }, 7 | //设置无限循环播放 8 | loop: true, 9 | //设置圆点指示器 10 | pagination: { 11 | el: '.swiper-pagination', 12 | }, 13 | //设置上下页按钮 14 | navigation: { 15 | nextEl: '.swiper-button-next', 16 | prevEl: '.swiper-button-prev', 17 | } 18 | }) 19 | 20 | $('.all-sort-list > .item').hover(function () { 21 | var eq = $('.all-sort-list > .item').index(this), //获取当前滑过是第几个元素 22 | h = $('.all-sort-list').offset().top, //获取当前下拉菜单距离窗口多少像素 23 | s = $(window).scrollTop(), //获取游览器滚动了多少高度 24 | i = $(this).offset().top, //当前元素滑过距离窗口多少像素 25 | item = $(this).children('.item-list').height(), //下拉菜单子类内容容器的高度 26 | sort = $('.all-sort-list').height(); //父类分类列表容器的高度 27 | 28 | if (item < sort) { //如果子类的高度小于父类的高度 29 | if (eq == 0) { 30 | $(this).children('.item-list').css('top', (i - h)); 31 | } else { 32 | $(this).children('.item-list').css('top', (i - h) + 1); 33 | } 34 | } else { 35 | if (s > h) { //判断子类的显示位置,如果滚动的高度大于所有分类列表容器的高度 36 | if (i - s > 0) { //则 继续判断当前滑过容器的位置 是否有一半超出窗口一半在窗口内显示的Bug, 37 | $(this).children('.item-list').css('top', (s - h) + 2); 38 | } else { 39 | $(this).children('.item-list').css('top', (s - h) - (-(i - s)) + 2); 40 | } 41 | } else { 42 | $(this).children('.item-list').css('top', 3); 43 | } 44 | } 45 | 46 | $(this).addClass('hover'); 47 | $(this).children('.item-list').css('display', 'block'); 48 | }, function () { 49 | $(this).removeClass('hover'); 50 | $(this).children('.item-list').css('display', 'none'); 51 | }); -------------------------------------------------------------------------------- /src/main/resources/static/mall/js/search.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | $('#keyword').keypress(function (e) { 3 | var key = e.which; //e.which是按键的值 4 | if (key == 13) { 5 | var q = $(this).val(); 6 | if (q && q != '') { 7 | window.location.href = '/search?keyword=' + q; 8 | } 9 | } 10 | }); 11 | }); 12 | 13 | function search() { 14 | var q = $('#keyword').val(); 15 | if (q && q != '') { 16 | window.location.href = '/search?keyword=' + q; 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/resources/templates/admin/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | Copyright © 2019-2020 十三. 6 | All rights reserved. 7 |
8 | newbee-mall #Version 1.0.0 9 |
10 |
11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/templates/mall/alipay.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | newbee-mall 支付 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/templates/mall/personal-sidebar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 | 13 |
14 |
15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/秒杀存储过程.sql: -------------------------------------------------------------------------------- 1 | -- 查看名称为execute_seckill的存储过程 2 | show procedure status where Name='execute_seckill'; 3 | 4 | -- 删除名称为execute_seckill的存储过程 5 | drop procedure if exists execute_seckill; 6 | 7 | -- 创建名称为execute_seckill的存储过程 8 | CREATE PROCEDURE `execute_seckill`(IN v_seckill_id bigint, IN v_user_id BIGINT, 9 | IN v_kill_time TIMESTAMP, OUT r_result INT) 10 | BEGIN 11 | DECLARE 12 | insert_count INT DEFAULT 0; 13 | START TRANSACTION; 14 | INSERT INTO tb_newbee_mall_seckill_success (seckill_id, user_id, create_time) 15 | VALUES (v_seckill_id, v_user_id, v_kill_time); 16 | SELECT ROW_COUNT() 17 | INTO insert_count; 18 | IF 19 | (insert_count = 0) THEN 20 | ROLLBACK; 21 | SET 22 | r_result = -1; 23 | ELSEIF 24 | (insert_count < 0) THEN 25 | ROLLBACK ; 26 | SET 27 | r_result = -2; 28 | ELSE 29 | update tb_newbee_mall_seckill 30 | set seckill_num = seckill_num - 1 31 | where seckill_id = v_seckill_id 32 | and seckill_num > 0 33 | and seckill_begin <= v_kill_time 34 | and seckill_end >= v_kill_time; 35 | SELECT ROW_COUNT() 36 | INTO insert_count; 37 | IF 38 | (insert_count = 0) THEN 39 | ROLLBACK; 40 | SET 41 | r_result = 0; 42 | ELSEIF 43 | (insert_count < 0) THEN 44 | ROLLBACK; 45 | SET 46 | r_result = -2; 47 | ELSE 48 | COMMIT; 49 | SET 50 | r_result = 1; 51 | END IF; 52 | END IF; 53 | END; 54 | -------------------------------------------------------------------------------- /upload.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/newbee-ltd/newbee-mall-plus/a8c057d6145cf8c6f0dbc2dc05af8e1414f0bf2c/upload.zip --------------------------------------------------------------------------------