├── kd-shop-ui ├── public │ ├── CNAME │ ├── favicon.svg │ ├── element-plus-logo-small.svg │ └── vite.svg ├── src │ ├── composables │ │ ├── index.ts │ │ └── dark.ts │ ├── assets │ │ ├── fonts │ │ │ ├── Poppins-Bold.ttf │ │ │ └── Poppins-Regular.otf │ │ ├── vue.svg │ │ └── images │ │ │ └── logo.svg │ ├── types │ │ ├── common_type.ts │ │ └── user_type.ts │ ├── pages │ │ └── error │ │ │ └── 404.vue │ ├── router │ │ ├── index.ts │ │ └── routes.ts │ ├── styles │ │ ├── element │ │ │ ├── dark.scss │ │ │ └── index.scss │ │ └── index.scss │ ├── App.vue │ ├── api │ │ ├── common.ts │ │ ├── user.ts │ │ └── request.ts │ ├── env.d.ts │ ├── main.ts │ ├── components │ │ ├── layouts │ │ │ └── index.vue │ │ └── Logos.vue │ ├── utils │ │ └── validate.ts │ └── store │ │ └── user.ts ├── .npmrc ├── scanshoot │ └── kd-shop.png ├── .env.development ├── .gitignore ├── README.md ├── index.html ├── tsconfig.json └── package.json ├── kd-shop-web └── src │ ├── main │ ├── resources │ │ ├── static │ │ │ ├── component │ │ │ │ ├── pear │ │ │ │ │ ├── css │ │ │ │ │ │ ├── pear-module │ │ │ │ │ │ │ ├── label.css │ │ │ │ │ │ │ ├── iconPicker.css │ │ │ │ │ │ │ ├── topBar.css │ │ │ │ │ │ │ ├── layer.css │ │ │ │ │ │ │ ├── icon │ │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ │ ├── iconfont.eot │ │ │ │ │ │ │ │ ├── iconfont.ttf │ │ │ │ │ │ │ │ ├── iconfont.woff │ │ │ │ │ │ │ │ └── iconfont.woff2 │ │ │ │ │ │ │ ├── code.css │ │ │ │ │ │ │ ├── dtree │ │ │ │ │ │ │ │ └── font │ │ │ │ │ │ │ │ │ ├── dtreefont.eot │ │ │ │ │ │ │ │ │ ├── dtreefont.ttf │ │ │ │ │ │ │ │ │ └── dtreefont.woff │ │ │ │ │ │ │ ├── link.css │ │ │ │ │ │ │ ├── treetable.css │ │ │ │ │ │ │ ├── message.css │ │ │ │ │ │ │ ├── json.css │ │ │ │ │ │ │ ├── tag.css │ │ │ │ │ │ │ ├── card.css │ │ │ │ │ │ │ ├── step.css │ │ │ │ │ │ │ └── form.css │ │ │ │ │ │ ├── pear.all.css │ │ │ │ │ │ └── pear.css │ │ │ │ │ ├── module │ │ │ │ │ │ ├── tinymce │ │ │ │ │ │ │ └── tinymce │ │ │ │ │ │ │ │ ├── langs │ │ │ │ │ │ │ │ └── readme.md │ │ │ │ │ │ │ │ ├── skins │ │ │ │ │ │ │ │ ├── ui │ │ │ │ │ │ │ │ │ ├── oxide │ │ │ │ │ │ │ │ │ │ ├── fonts │ │ │ │ │ │ │ │ │ │ │ └── tinymce-mobile.woff │ │ │ │ │ │ │ │ │ │ ├── content.mobile.min.css │ │ │ │ │ │ │ │ │ │ ├── content.mobile.css │ │ │ │ │ │ │ │ │ │ └── content.mobile.min.css.map │ │ │ │ │ │ │ │ │ └── oxide-dark │ │ │ │ │ │ │ │ │ │ ├── fonts │ │ │ │ │ │ │ │ │ │ └── tinymce-mobile.woff │ │ │ │ │ │ │ │ │ │ ├── content.mobile.min.css │ │ │ │ │ │ │ │ │ │ ├── content.mobile.css │ │ │ │ │ │ │ │ │ │ └── content.mobile.min.css.map │ │ │ │ │ │ │ │ └── content │ │ │ │ │ │ │ │ │ ├── default │ │ │ │ │ │ │ │ │ ├── content.min.css │ │ │ │ │ │ │ │ │ ├── content.css │ │ │ │ │ │ │ │ │ └── content.min.css.map │ │ │ │ │ │ │ │ │ ├── writer │ │ │ │ │ │ │ │ │ ├── content.min.css │ │ │ │ │ │ │ │ │ ├── content.css │ │ │ │ │ │ │ │ │ └── content.min.css.map │ │ │ │ │ │ │ │ │ ├── document │ │ │ │ │ │ │ │ │ ├── content.min.css │ │ │ │ │ │ │ │ │ └── content.css │ │ │ │ │ │ │ │ │ └── dark │ │ │ │ │ │ │ │ │ ├── content.min.css │ │ │ │ │ │ │ │ │ └── content.css │ │ │ │ │ │ │ │ └── plugins │ │ │ │ │ │ │ │ ├── textcolor │ │ │ │ │ │ │ │ ├── plugin.min.js │ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ │ │ ├── colorpicker │ │ │ │ │ │ │ │ ├── plugin.min.js │ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ │ │ ├── contextmenu │ │ │ │ │ │ │ │ ├── plugin.min.js │ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ │ │ ├── hr │ │ │ │ │ │ │ │ ├── plugin.min.js │ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ │ │ ├── print │ │ │ │ │ │ │ │ ├── plugin.min.js │ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ │ │ ├── code │ │ │ │ │ │ │ │ └── plugin.min.js │ │ │ │ │ │ │ │ ├── nonbreaking │ │ │ │ │ │ │ │ └── plugin.min.js │ │ │ │ │ │ │ │ ├── visualblocks │ │ │ │ │ │ │ │ └── plugin.min.js │ │ │ │ │ │ │ │ └── save │ │ │ │ │ │ │ │ └── plugin.min.js │ │ │ │ │ │ ├── document.js │ │ │ │ │ │ ├── topBar.js │ │ │ │ │ │ ├── count.js │ │ │ │ │ │ ├── button.js │ │ │ │ │ │ └── popup.js │ │ │ │ │ ├── pear.js │ │ │ │ │ └── pear.all.js │ │ │ │ └── layui │ │ │ │ │ ├── font │ │ │ │ │ ├── iconfont.eot │ │ │ │ │ ├── iconfont.ttf │ │ │ │ │ ├── iconfont.woff │ │ │ │ │ └── iconfont.woff2 │ │ │ │ │ ├── images │ │ │ │ │ └── face │ │ │ │ │ │ ├── 0.gif │ │ │ │ │ │ ├── 1.gif │ │ │ │ │ │ ├── 2.gif │ │ │ │ │ │ ├── 3.gif │ │ │ │ │ │ ├── 4.gif │ │ │ │ │ │ ├── 5.gif │ │ │ │ │ │ ├── 6.gif │ │ │ │ │ │ ├── 7.gif │ │ │ │ │ │ ├── 8.gif │ │ │ │ │ │ ├── 9.gif │ │ │ │ │ │ ├── 10.gif │ │ │ │ │ │ ├── 11.gif │ │ │ │ │ │ ├── 12.gif │ │ │ │ │ │ ├── 13.gif │ │ │ │ │ │ ├── 14.gif │ │ │ │ │ │ ├── 15.gif │ │ │ │ │ │ ├── 16.gif │ │ │ │ │ │ ├── 17.gif │ │ │ │ │ │ ├── 18.gif │ │ │ │ │ │ ├── 19.gif │ │ │ │ │ │ ├── 20.gif │ │ │ │ │ │ ├── 21.gif │ │ │ │ │ │ ├── 22.gif │ │ │ │ │ │ ├── 23.gif │ │ │ │ │ │ ├── 24.gif │ │ │ │ │ │ ├── 25.gif │ │ │ │ │ │ ├── 26.gif │ │ │ │ │ │ ├── 27.gif │ │ │ │ │ │ ├── 28.gif │ │ │ │ │ │ ├── 29.gif │ │ │ │ │ │ ├── 30.gif │ │ │ │ │ │ ├── 31.gif │ │ │ │ │ │ ├── 32.gif │ │ │ │ │ │ ├── 33.gif │ │ │ │ │ │ ├── 34.gif │ │ │ │ │ │ ├── 35.gif │ │ │ │ │ │ ├── 36.gif │ │ │ │ │ │ ├── 37.gif │ │ │ │ │ │ ├── 38.gif │ │ │ │ │ │ ├── 39.gif │ │ │ │ │ │ ├── 40.gif │ │ │ │ │ │ ├── 41.gif │ │ │ │ │ │ ├── 42.gif │ │ │ │ │ │ ├── 43.gif │ │ │ │ │ │ ├── 44.gif │ │ │ │ │ │ ├── 45.gif │ │ │ │ │ │ ├── 46.gif │ │ │ │ │ │ ├── 47.gif │ │ │ │ │ │ ├── 48.gif │ │ │ │ │ │ ├── 49.gif │ │ │ │ │ │ ├── 50.gif │ │ │ │ │ │ ├── 51.gif │ │ │ │ │ │ ├── 52.gif │ │ │ │ │ │ ├── 53.gif │ │ │ │ │ │ ├── 54.gif │ │ │ │ │ │ ├── 55.gif │ │ │ │ │ │ ├── 56.gif │ │ │ │ │ │ ├── 57.gif │ │ │ │ │ │ ├── 58.gif │ │ │ │ │ │ ├── 59.gif │ │ │ │ │ │ ├── 60.gif │ │ │ │ │ │ ├── 61.gif │ │ │ │ │ │ ├── 62.gif │ │ │ │ │ │ ├── 63.gif │ │ │ │ │ │ ├── 64.gif │ │ │ │ │ │ ├── 65.gif │ │ │ │ │ │ ├── 66.gif │ │ │ │ │ │ ├── 67.gif │ │ │ │ │ │ ├── 68.gif │ │ │ │ │ │ ├── 69.gif │ │ │ │ │ │ ├── 70.gif │ │ │ │ │ │ └── 71.gif │ │ │ │ │ ├── css │ │ │ │ │ └── modules │ │ │ │ │ │ ├── layer │ │ │ │ │ │ └── default │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ │ └── loading-2.gif │ │ │ │ │ │ └── code.css │ │ │ │ │ └── lay │ │ │ │ │ └── modules │ │ │ │ │ ├── code.js │ │ │ │ │ └── laytpl.js │ │ │ ├── css │ │ │ │ └── signin.css │ │ │ ├── img │ │ │ │ └── bootstrap-solid.svg │ │ │ ├── pear.config.json │ │ │ └── pear.config.yml │ │ ├── i18n │ │ │ ├── login_en_US.properties │ │ │ ├── login.properties │ │ │ └── login_zh_CN.properties │ │ ├── mybatis │ │ │ └── mybatis-config.xml │ │ ├── templates │ │ │ ├── commons │ │ │ │ └── include.html │ │ │ └── index.html │ │ └── application.yml │ └── java │ │ └── com │ │ └── lvr │ │ └── kdshop │ │ └── web │ │ ├── WebApplication.java │ │ ├── config │ │ └── locale │ │ │ └── MyLocaleResolver.java │ │ ├── interceptor │ │ └── AdminInterceptor.java │ │ ├── utils │ │ └── ImageUtil.java │ │ └── controller │ │ └── AdminController.java │ └── test │ └── java │ └── com │ └── lvr │ └── kdshop │ └── web │ └── WebApplicationTests.java ├── upload ├── 20241023144112.jpg ├── user │ ├── 20250115092430.jpg │ ├── 20250115092533.jpg │ └── 20250115092957.jpg └── web │ ├── 20241023150108.jpg │ ├── 20241023150146.jpg │ ├── 20250115091255.jpg │ └── 20250115091446.jpg ├── kd-shop-business └── src │ └── main │ ├── resources │ ├── application.yml │ └── mapper │ │ └── RoleMapper.xml │ └── java │ └── com │ └── lvr │ └── kdshop │ └── business │ ├── mapper │ ├── RoleMapper.java │ ├── OrdersMapper.java │ ├── ReplyMapper.java │ ├── NoticeMapper.java │ ├── ImageMapper.java │ ├── ReportMapper.java │ ├── WantedMapper.java │ ├── CommentsMapper.java │ ├── CarouselMapper.java │ └── CatelogMapper.java │ ├── service │ ├── RoleService.java │ ├── impl │ │ ├── RoleServiceImpl.java │ │ ├── OrdersServiceImpl.java │ │ ├── ImageServiceImpl.java │ │ ├── WantedServiceImpl.java │ │ ├── ReportServiceImpl.java │ │ ├── CommentsServiceImpl.java │ │ └── CarouselServiceImpl.java │ ├── OrdersService.java │ ├── CatelogService.java │ ├── UserService.java │ ├── ReportService.java │ ├── ImageService.java │ ├── WantedService.java │ ├── CommentsService.java │ └── CarouselService.java │ └── utils │ ├── PageRequest.java │ ├── PageResult.java │ └── PageUtils.java ├── kd-shop-common └── src │ └── main │ └── java │ └── com │ └── lvr │ └── kdshop │ ├── util │ ├── ConvertUtil.java │ ├── UserContext.java │ ├── JSONResult.java │ ├── MD5.java │ ├── ResuTree.java │ └── ResultTable.java │ ├── common │ ├── Tablepar.java │ ├── FieldStrategy.java │ ├── BaseController.java │ └── FieldFill.java │ ├── pojo │ ├── GoodsExtend.java │ ├── Catelog.java │ ├── Purse.java │ ├── OrdersExtend.java │ ├── Report.java │ ├── Comments.java │ ├── School.java │ ├── Carousel.java │ ├── Notice.java │ ├── Roles.java │ ├── Orders.java │ ├── CommentsExtend.java │ ├── WantedExtend.java │ ├── Goods.java │ ├── ReportExtend.java │ ├── SysUser.java │ └── CatelogExtend.java │ ├── annotation │ ├── PassToken.java │ ├── AdminToken.java │ └── UserLoginToken.java │ ├── ex │ ├── PageNotFoundException.java │ ├── PhoneNotFoundException.java │ ├── UsernameTakenException.java │ ├── UserPasswordErrorException.java │ └── ServiceException.java │ └── constant │ ├── StatusEnum.java │ └── Constant.java ├── .gitignore └── pom.xml /kd-shop-ui/public/CNAME: -------------------------------------------------------------------------------- 1 | vite-starter.element-plus.org 2 | -------------------------------------------------------------------------------- /kd-shop-ui/src/composables/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./dark"; 2 | -------------------------------------------------------------------------------- /kd-shop-ui/.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | strict-peer-dependencies=false 3 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/label.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /upload/20241023144112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/20241023144112.jpg -------------------------------------------------------------------------------- /upload/user/20250115092430.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/user/20250115092430.jpg -------------------------------------------------------------------------------- /upload/user/20250115092533.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/user/20250115092533.jpg -------------------------------------------------------------------------------- /upload/user/20250115092957.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/user/20250115092957.jpg -------------------------------------------------------------------------------- /upload/web/20241023150108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/web/20241023150108.jpg -------------------------------------------------------------------------------- /upload/web/20241023150146.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/web/20241023150146.jpg -------------------------------------------------------------------------------- /upload/web/20250115091255.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/web/20250115091255.jpg -------------------------------------------------------------------------------- /upload/web/20250115091446.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/upload/web/20250115091446.jpg -------------------------------------------------------------------------------- /kd-shop-ui/scanshoot/kd-shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-ui/scanshoot/kd-shop.png -------------------------------------------------------------------------------- /kd-shop-ui/src/assets/fonts/Poppins-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-ui/src/assets/fonts/Poppins-Bold.ttf -------------------------------------------------------------------------------- /kd-shop-ui/.env.development: -------------------------------------------------------------------------------- 1 | NODE_ENV=development 2 | VITE_APP_BASE_URL=/devApi 3 | VITE_APP_BASE_API=http://localhost:3000 4 | VITE_APP_TITLE=I have -------------------------------------------------------------------------------- /kd-shop-ui/src/assets/fonts/Poppins-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-ui/src/assets/fonts/Poppins-Regular.otf -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/iconPicker.css: -------------------------------------------------------------------------------- 1 | .layui-iconpicker .layui-anim{ 2 | width: 300px!important; 3 | } -------------------------------------------------------------------------------- /kd-shop-ui/src/composables/dark.ts: -------------------------------------------------------------------------------- 1 | import { useDark, useToggle } from "@vueuse/core"; 2 | 3 | export const isDark = useDark(); 4 | export const toggleDark = useToggle(isDark); 5 | -------------------------------------------------------------------------------- /kd-shop-ui/src/types/common_type.ts: -------------------------------------------------------------------------------- 1 | type ResponseType = { 2 | code: number, 3 | data: any, 4 | msg: string 5 | } 6 | 7 | export { 8 | ResponseType 9 | } 10 | -------------------------------------------------------------------------------- /kd-shop-ui/src/types/user_type.ts: -------------------------------------------------------------------------------- 1 | type RequestData = { 2 | username: string, 3 | password: string, 4 | code: string 5 | } 6 | 7 | export { 8 | RequestData 9 | } 10 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/i18n/login_en_US.properties: -------------------------------------------------------------------------------- 1 | login.password=Password 2 | login.remember=Remember me 3 | login.sign=Sign in 4 | login.tip=Please sign in 5 | login.username=Username -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/font/iconfont.eot -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/0.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/1.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/2.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/3.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/4.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/5.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/6.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/7.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/8.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/9.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/topBar.css: -------------------------------------------------------------------------------- 1 | .layui-fixbar li{ 2 | border-radius: 4px; 3 | background-color: #5FB878; 4 | color: white; 5 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/font/iconfont.woff -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/font/iconfont.woff2 -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/10.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/11.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/12.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/13.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/14.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/15.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/16.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/17.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/18.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/19.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/20.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/21.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/22.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/23.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/24.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/25.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/26.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/27.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/28.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/29.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/30.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/31.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/32.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/33.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/34.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/35.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/36.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/37.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/38.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/39.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/40.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/41.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/42.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/43.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/44.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/45.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/46.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/47.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/48.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/49.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/50.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/51.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/52.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/53.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/54.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/55.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/56.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/57.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/58.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/59.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/60.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/61.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/62.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/63.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/64.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/65.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/66.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/67.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/68.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/69.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/70.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/images/face/71.gif -------------------------------------------------------------------------------- /kd-shop-business/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # pagehelper 2 | pagehelper: 3 | helperDialect: mysql 4 | reasonable: true 5 | supportMethodsArguments: true 6 | params: count=countSql 7 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/layer.css: -------------------------------------------------------------------------------- 1 | .layui-layer-msg{ 2 | border-color: transparent!important; 3 | box-shadow: 2px 0 6px rgb(0 21 41 / 0.05)!important; 4 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/i18n/login.properties: -------------------------------------------------------------------------------- 1 | login.password=\u5BC6\u7801 2 | login.remember=\u8BB0\u4F4F\u6211 3 | login.sign=\u767B\u5F55 4 | login.tip=\u8BF7\u767B\u5F55 5 | login.username=\u7528\u6237\u540D -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/icon.png -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/i18n/login_zh_CN.properties: -------------------------------------------------------------------------------- 1 | login.password=\u5BC6\u7801 2 | login.remember=\u8BB0\u4F4F\u6211 3 | login.sign=\u767B\u5F55 4 | login.tip=\u8BF7\u767B\u5F55 5 | login.username=\u7528\u6237\u540D -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.eot -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.ttf -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.woff -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/icon/iconfont.woff2 -------------------------------------------------------------------------------- /kd-shop-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .vite-ssg-temp 2 | 3 | node_modules 4 | .DS_Store 5 | dist 6 | dist-ssr 7 | *.local 8 | 9 | # lock 10 | yarn.lock 11 | package-lock.json 12 | pnpm-lock.yaml 13 | 14 | *.log 15 | 16 | .vscode/ 17 | -------------------------------------------------------------------------------- /kd-shop-ui/src/pages/error/404.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/code.css: -------------------------------------------------------------------------------- 1 | .layui-colla-content{ 2 | padding: 0px; 3 | } 4 | .layui-code-view{ 5 | margin: 0px!important; 6 | } 7 | .layui-code-h3{ 8 | display: none!important; 9 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.eot -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.ttf -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/dtree/font/dtreefont.woff -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/langs/readme.md: -------------------------------------------------------------------------------- 1 | This is where language files should be placed. 2 | 3 | Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ 4 | -------------------------------------------------------------------------------- /kd-shop-ui/src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHashHistory } from 'vue-router' 2 | import routes from './routes' 3 | 4 | const router = createRouter({ 5 | history: createWebHashHistory(), 6 | routes 7 | }) 8 | 9 | export default router -------------------------------------------------------------------------------- /kd-shop-ui/src/styles/element/dark.scss: -------------------------------------------------------------------------------- 1 | // only scss variables 2 | 3 | $--colors: ( 4 | "primary": ( 5 | "base": #589ef8, 6 | ), 7 | ); 8 | 9 | @forward "element-plus/theme-chalk/src/dark/var.scss" with ( 10 | $colors: $--colors 11 | ); 12 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvr1997/kd-shop/HEAD/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Roles; 4 | 5 | import java.util.List; 6 | 7 | public interface RoleMapper { 8 | List selectRolePermissionByUserId(String userId); 9 | } 10 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/document.js: -------------------------------------------------------------------------------- 1 | layui.define(['jquery', 'element'], function(exports) { 2 | "use strict"; 3 | 4 | var MOD_NAME = 'document'; 5 | 6 | var document = function(opt) { 7 | this.option = opt; 8 | }; 9 | 10 | exports(MOD_NAME, new document()); 11 | }) 12 | -------------------------------------------------------------------------------- /kd-shop-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 17 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | import com.lvr.kdshop.pojo.Roles; 4 | 5 | import java.util.Collection; 6 | import java.util.List; 7 | 8 | public interface RoleService { 9 | 10 | List findRolesByUserId(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /kd-shop-ui/README.md: -------------------------------------------------------------------------------- 1 | # 『kd-shop』科大二手工坊V2.0 2 | 3 | 4 | 5 | ## ⛏️项目二次开发 6 | 7 | ① `Star`本项目; 8 | 9 | ② `Fork`本仓库; 10 | 11 | ③ `clone`项目到本地 12 | 13 | ④ 安装依赖 14 | 15 | ```sh 16 | npm install 17 | ``` 18 | ⑤ 编译并热启动 19 | 20 | ```sh 21 | npm run dev 22 | ``` 23 | 24 | ## 致谢 25 | 26 | ♪(・ω・)ノ最后感谢各位小伙伴们的支持,也希望项目会对你们有所帮助 27 | 28 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/ConvertUtil.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | public class ConvertUtil { 4 | 5 | /** 6 | * 字符串转数组 7 | * @param str 8 | * @return 9 | */ 10 | public static String[] toStrArray(String str) { 11 | return str.split(","); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /kd-shop-web/src/test/java/com/lvr/kdshop/web/WebApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.web; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class WebApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/common/Tablepar.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.common; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Tablepar { 7 | 8 | private String searchText; 9 | 10 | private String orderByColumn; 11 | 12 | private Integer page; 13 | 14 | private Integer limit; 15 | 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/GoodsExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | @Data 9 | public class GoodsExtend { 10 | private Goods good; 11 | private Image firstImage; //首页显示的商品主图 12 | private List images = new ArrayList(); 13 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/link.css: -------------------------------------------------------------------------------- 1 | .pear-link{ 2 | font-size: 15px!important; 3 | } 4 | 5 | .pear-link.pear-link-primary{ 6 | color : #5FB878 ; 7 | } 8 | 9 | .pear-link.pear-link-success{ 10 | color : #5FB878 ; 11 | } 12 | 13 | .pear-link .pear-link-warming{ 14 | 15 | 16 | } 17 | 18 | .pear-link .pear-link-danger{ 19 | 20 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/topBar.js: -------------------------------------------------------------------------------- 1 | layui.define(['jquery', 'element','util'], function(exports) { 2 | "use strict"; 3 | 4 | var MOD_NAME = 'topBar', 5 | $ = layui.jquery, 6 | util = layui.util, 7 | element = layui.element; 8 | 9 | var topBar = new function() { 10 | 11 | util.fixbar({}); 12 | } 13 | exports(MOD_NAME,topBar); 14 | }); -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Catelog.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class Catelog { 11 | 12 | private Integer id; 13 | 14 | private String name; 15 | 16 | private Byte status; 17 | 18 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Purse.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class Purse { 11 | private Integer id; 12 | private String userId; 13 | private Double balance; 14 | private byte state; 15 | } 16 | -------------------------------------------------------------------------------- /kd-shop-ui/src/api/common.ts: -------------------------------------------------------------------------------- 1 | import instance from "./request"; 2 | /** 3 | * 获取验证码 4 | */ 5 | export function GetCode(data: any) { 6 | return instance.request({ 7 | method: "POST", 8 | url: "/getCode/", 9 | data, 10 | }); 11 | } 12 | 13 | /** 14 | * http状态码异常演示接口 15 | */ 16 | export function ErrorHttp(data: any) { 17 | return instance.request({ 18 | method: "POST", 19 | url: "/error/", 20 | data, 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /kd-shop-ui/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | 9 | interface ImportMetaEnv { 10 | readonly VITE_APP_TITLE: string 11 | readonly VITE_APP_BASE_URL: string 12 | readonly VITE_APP_BASE_API: string 13 | } 14 | 15 | interface ImportMeta { 16 | readonly env: ImportMetaEnv 17 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/OrdersExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class OrdersExtend { 13 | private Goods good; 14 | private Orders orders; 15 | private List images; 16 | private SysUser user; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Report.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class Report { 11 | private Integer id; 12 | private Integer type; 13 | private Integer goodId; 14 | private String userId; 15 | private String content; 16 | private Byte status; 17 | } 18 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Comments.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class Comments { 11 | 12 | private Integer id; 13 | 14 | private String userId; 15 | 16 | private Integer goodsId; 17 | 18 | private String createAt; 19 | 20 | private String content; 21 | 22 | } -------------------------------------------------------------------------------- /kd-shop-ui/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia'; 2 | import { createApp } from "vue"; 3 | import App from "./App.vue"; 4 | import router from "./router"; 5 | 6 | // import "~/styles/element/index.scss"; 7 | 8 | import "element-plus/theme-chalk/src/message.scss"; 9 | 10 | import "uno.css"; 11 | import "~/styles/index.scss"; 12 | 13 | const pinia = createPinia() 14 | 15 | const app = createApp(App); 16 | 17 | app.use(router); 18 | app.use(pinia) 19 | app.mount("#app"); 20 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/annotation/PassToken.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 用来跳过登录认证 10 | */ 11 | @Target({ElementType.METHOD, ElementType.TYPE}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface PassToken { 14 | boolean required() default true; 15 | } 16 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/utils/PageRequest.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.utils; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 9 | * 分页请求 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class PageRequest { 15 | /** 16 | * 当前页码 17 | */ 18 | private int pageNum; 19 | /** 20 | * 每页数量 21 | */ 22 | private int pageSize; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/School.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class School { 13 | private Integer id; 14 | private String schoolId; 15 | private String schoolName; 16 | private String schoolLocation; 17 | private LocalDateTime createAt; 18 | } 19 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Carousel.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class Carousel { 11 | 12 | private Integer id; 13 | 14 | private String title; 15 | 16 | private String createAt; 17 | 18 | private Byte status; 19 | 20 | private String descript; 21 | 22 | private String imgUrl; 23 | 24 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Notice.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class Notice { 11 | 12 | private Integer id; 13 | 14 | private Integer userId; 15 | 16 | private String createAt; 17 | 18 | private Byte status; 19 | 20 | private String context; 21 | 22 | private String imgUrl; 23 | 24 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/UserContext.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | public class UserContext { 4 | private static ThreadLocal threadLocal = new ThreadLocal<>(); 5 | 6 | public static String getCurrentId(){ 7 | return threadLocal.get(); 8 | } 9 | 10 | public static void setCurrentId(String id) { 11 | threadLocal.set(id); 12 | } 13 | 14 | public static void removeCurrentId() { 15 | threadLocal.remove(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /kd-shop-ui/src/assets/vue.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/annotation/AdminToken.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 自定义jwt注解 10 | * 需要管理员登录才能访问的注解 11 | */ 12 | @Target({ElementType.METHOD, ElementType.TYPE}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface AdminToken { 15 | boolean required() default true; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/annotation/UserLoginToken.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 自定义jwt注解 10 | * 需要登录才能访问的注解 11 | */ 12 | @Target({ElementType.METHOD, ElementType.TYPE}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface UserLoginToken { 15 | boolean required() default true; 16 | } 17 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Roles.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.time.LocalDateTime; 8 | import java.util.List; 9 | 10 | @Data 11 | @NoArgsConstructor 12 | @AllArgsConstructor 13 | public class Roles { 14 | 15 | private Integer id; 16 | private String roleId; 17 | private String roleName; 18 | private String commet; 19 | private String createDate; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /kd-shop-ui/src/components/layouts/index.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/treetable.css: -------------------------------------------------------------------------------- 1 | .treeTable-icon i:last-child{ 2 | display: none!important; 3 | } 4 | 5 | .treeTable-empty{ 6 | margin-left: -3px; 7 | } 8 | .treeTable-empty { 9 | width: 20px; 10 | display: inline-block; 11 | } 12 | 13 | .treeTable-icon { 14 | cursor: pointer; 15 | } 16 | 17 | .treeTable-icon .layui-icon-triangle-d:before { 18 | content: "\e623"; 19 | } 20 | 21 | .treeTable-icon.open .layui-icon-triangle-d:before { 22 | content: "\e625"; 23 | background-color: transparent; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /kd-shop-ui/src/api/user.ts: -------------------------------------------------------------------------------- 1 | import instance from "./request"; 2 | /** 3 | * 注册接口 4 | */ 5 | export function Register(data = {}) { 6 | return instance.request({ 7 | method: "POST", 8 | url: "/register/", 9 | data, 10 | }); 11 | } 12 | 13 | /** 登录 */ 14 | export function Login(data = {}) { 15 | return instance.request({ 16 | method: "post", 17 | url: "/login/", 18 | data, 19 | }); 20 | } 21 | 22 | /** 登出 */ 23 | export function Logout() { 24 | return instance.request({ 25 | method: "post", 26 | url: "/logout/", 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Orders.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | @AllArgsConstructor 11 | public class Orders { 12 | 13 | private Integer id; 14 | 15 | private String orderId; 16 | 17 | private String userId; 18 | 19 | private Integer sellerId; 20 | 21 | private Integer goodId; 22 | 23 | private String address; 24 | 25 | private String payId; 26 | 27 | private String createAt; 28 | 29 | private Byte status; 30 | 31 | } -------------------------------------------------------------------------------- /kd-shop-ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Element Plus Vite Starter 8 | 9 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/utils/PageResult.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.utils; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 分页返回结果 9 | */ 10 | @Data 11 | public class PageResult { 12 | 13 | /** 14 | * 当前页码 15 | */ 16 | private int pageNum; 17 | /** 18 | * 每页数量 19 | */ 20 | private int pageSize; 21 | /** 22 | * 记录总数 23 | */ 24 | private long totalSize; 25 | /** 26 | * 页码总数 27 | */ 28 | private int totalPages; 29 | /** 30 | * 数据模型 31 | */ 32 | private List content; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/textcolor/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window); -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window); -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | logs/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | !**/node_modules/ 35 | kd-shop-vue/node_modules/ 36 | 37 | kd-shop-business/bin/ 38 | kd-shop-common/bin/ 39 | kd-shop-web/bin/ 40 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.RoleMapper; 4 | import com.lvr.kdshop.business.service.RoleService; 5 | import com.lvr.kdshop.pojo.Roles; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.*; 10 | 11 | @Service 12 | public class RoleServiceImpl implements RoleService { 13 | 14 | @Autowired 15 | private RoleMapper roleMapper; 16 | 17 | @Override 18 | public List findRolesByUserId() { 19 | return null; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/common/FieldStrategy.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.common; 2 | 3 | /** 4 | * 字段策略枚举类 5 | *

6 | * 如果字段是基本数据类型则最终效果等同于 {@link #IGNORED} 7 | * 8 | * @author hubin 9 | * @since 2016-09-09 10 | */ 11 | public enum FieldStrategy { 12 | /** 13 | * 忽略判断 14 | */ 15 | IGNORED, 16 | /** 17 | * 非NULL判断 18 | */ 19 | NOT_NULL, 20 | /** 21 | * 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断) 22 | */ 23 | NOT_EMPTY, 24 | /** 25 | * 默认的,一般只用于注解里 26 | *

1. 在全局里代表 NOT_NULL

27 | *

2. 在注解里代表 跟随全局

28 | */ 29 | DEFAULT, 30 | /** 31 | * 不加入 SQL 32 | */ 33 | NEVER 34 | } 35 | -------------------------------------------------------------------------------- /kd-shop-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "esnext", 5 | "useDefineForClassFields": true, 6 | "module": "esnext", 7 | "moduleResolution": "node", 8 | "strict": true, 9 | "jsx": "preserve", 10 | "sourceMap": true, 11 | "resolveJsonModule": true, 12 | "esModuleInterop": true, 13 | "lib": ["esnext", "dom"], 14 | "paths": { 15 | "~/*": ["src/*"] 16 | }, 17 | "skipLibCheck": true, 18 | "types": ["element-plus/global"] 19 | }, 20 | "vueCompilerOptions": { 21 | "target": 3 22 | }, 23 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 24 | "exclude": ["node_modules"] 25 | } 26 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | /*# sourceMappingURL=content.mobile.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | /*# sourceMappingURL=content.mobile.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-ui/src/styles/index.scss: -------------------------------------------------------------------------------- 1 | // import dark theme 2 | @use "element-plus/theme-chalk/src/dark/css-vars.scss" as *; 3 | 4 | :root { 5 | // --ep-color-primary: red; 6 | --footer: 96px; 7 | } 8 | 9 | body { 10 | font-family: Inter, system-ui, Avenir, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", 11 | "Microsoft YaHei", "微软雅黑", Arial, sans-serif; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | margin: 0; 15 | // overflow: hidden; 16 | } 17 | 18 | a { 19 | color: var(--ep-color-primary); 20 | } 21 | 22 | code { 23 | border-radius: 2px; 24 | padding: 2px 4px; 25 | background-color: var(--ep-color-primary-light-9); 26 | color: var(--ep-color-primary); 27 | } 28 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/ex/PageNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.ex; 2 | 3 | public class PageNotFoundException extends ServiceException { 4 | public PageNotFoundException() { 5 | super(); 6 | } 7 | 8 | public PageNotFoundException(String message) { 9 | super(message); 10 | } 11 | 12 | public PageNotFoundException(String message, Throwable cause) { 13 | super(message); 14 | } 15 | 16 | public PageNotFoundException(Throwable cause) { 17 | super(cause.getMessage()); 18 | } 19 | 20 | protected PageNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 21 | super(message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/ex/PhoneNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.ex; 2 | 3 | public class PhoneNotFoundException extends ServiceException{ 4 | public PhoneNotFoundException() { 5 | super(); 6 | } 7 | 8 | public PhoneNotFoundException(String message) { 9 | super(message); 10 | } 11 | 12 | public PhoneNotFoundException(String message, Throwable cause) { 13 | super(message); 14 | } 15 | 16 | public PhoneNotFoundException(Throwable cause) { 17 | super(cause.getMessage()); 18 | } 19 | 20 | protected PhoneNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 21 | super(message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/ex/UsernameTakenException.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.ex; 2 | 3 | public class UsernameTakenException extends ServiceException{ 4 | public UsernameTakenException() { 5 | super(); 6 | } 7 | 8 | public UsernameTakenException(String message) { 9 | super(message); 10 | } 11 | 12 | public UsernameTakenException(String message, Throwable cause) { 13 | super(message); 14 | } 15 | 16 | public UsernameTakenException(Throwable cause) { 17 | super(cause.getMessage()); 18 | } 19 | 20 | protected UsernameTakenException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 21 | super(message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/CommentsExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | public class CommentsExtend { 4 | private Goods goods; 5 | private SysUser user; 6 | private Comments comments; 7 | public Goods getGoods() { 8 | return goods; 9 | } 10 | public void setGoods(Goods goods) { 11 | this.goods = goods; 12 | } 13 | 14 | public SysUser getUser() { 15 | return user; 16 | } 17 | 18 | public void setUser(SysUser user) { 19 | this.user = user; 20 | } 21 | 22 | public Comments getComments() { 23 | return comments; 24 | } 25 | 26 | public void setComments(Comments comments) { 27 | this.comments = comments; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /kd-shop-ui/src/utils/validate.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 校验规则 3 | */ 4 | const regEmail = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/; 5 | const regPhone = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/; 6 | const reg_username = /^[a-zA-Z][a-zA-Z0-9]{4,15}$/; 7 | const regPassword = /^(?!\D+$)(?![^a-zA-Z]+$)\S{6,20}$/; 8 | const regCode = /^[a-z0-9]{6}$/; 9 | 10 | // 校验手机号 11 | export const validate_phone = (value: string) : boolean => regPhone.test(value); 12 | 13 | //校验邮箱 14 | export const validate_email = (value: string) : boolean => regEmail.test(value); 15 | 16 | // 校验密码 17 | export const validate_password = (value: string) : boolean => regPassword.test(value); 18 | 19 | // 校验验证码 20 | export const validate_code = (value: any) : boolean => regCode.test(value); 21 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/ex/UserPasswordErrorException.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.ex; 2 | 3 | public class UserPasswordErrorException extends ServiceException{ 4 | public UserPasswordErrorException() { 5 | super(); 6 | } 7 | 8 | public UserPasswordErrorException(String message) { 9 | super(message); 10 | } 11 | 12 | public UserPasswordErrorException(String message, Throwable cause) { 13 | super(message); 14 | } 15 | 16 | public UserPasswordErrorException(Throwable cause) { 17 | super(cause.getMessage()); 18 | } 19 | 20 | protected UserPasswordErrorException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 21 | super(message); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/WantedExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | public class WantedExtend { 4 | private Wanted wanted; 5 | private GoodsExtend goodsExtend; 6 | private SysUser user; 7 | 8 | public Wanted getWanted() { 9 | return wanted; 10 | } 11 | 12 | public void setWanted(Wanted wanted) { 13 | this.wanted = wanted; 14 | } 15 | 16 | public GoodsExtend getGoodsExtend() { 17 | return goodsExtend; 18 | } 19 | 20 | public void setGoodsExtend(GoodsExtend goodsExtend) { 21 | this.goodsExtend = goodsExtend; 22 | } 23 | 24 | public SysUser getUser() { 25 | return user; 26 | } 27 | 28 | public void setUser(SysUser user) { 29 | this.user = user; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/utils/PageUtils.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.utils; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | 5 | public class PageUtils { 6 | /** 7 | * 将分页信息封装到统一的接口 8 | * @param pageRequest 9 | * @param pageInfo 10 | * @return 11 | */ 12 | public static PageResult getPageResult(PageRequest pageRequest, PageInfo pageInfo) { 13 | PageResult pageResult = new PageResult(); 14 | pageResult.setPageNum(pageInfo.getPageNum()); 15 | pageResult.setPageSize(pageInfo.getPageSize()); 16 | pageResult.setTotalSize(pageInfo.getTotal()); 17 | pageResult.setTotalPages(pageInfo.getPages()); 18 | pageResult.setContent(pageInfo.getList()); 19 | return pageResult; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/java/com/lvr/kdshop/web/WebApplication.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.web; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.context.annotation.ComponentScan; 7 | 8 | @ComponentScan(basePackages = {"com.lvr.kdshop.web.config","com.lvr.kdshop.web.interceptor","com.lvr.kdshop.web.utils", 9 | "com.lvr.kdshop.business.service", "com.lvr.kdshop.web.controller"}) 10 | @MapperScan("com.lvr.kdshop.business.mapper") 11 | @SpringBootApplication 12 | public class WebApplication { 13 | 14 | public static void main(String[] args) { 15 | SpringApplication.run(WebApplication.class, args); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/textcolor/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function (domGlobals) { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('textcolor', function () { 16 | domGlobals.console.warn('Text color plugin is now built in to the core editor, please remove it from your editor configuration'); 17 | }); 18 | } 19 | 20 | Plugin(); 21 | 22 | }(window)); 23 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function (domGlobals) { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('colorpicker', function () { 16 | domGlobals.console.warn('Color picker plugin is now built in to the core editor, please remove it from your editor configuration'); 17 | }); 18 | } 19 | 20 | Plugin(); 21 | 22 | }(window)); 23 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function (domGlobals) { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('contextmenu', function () { 16 | domGlobals.console.warn('Context menu plugin is now built in to the core editor, please remove it from your editor configuration'); 17 | }); 18 | } 19 | 20 | Plugin(); 21 | 22 | }(window)); 23 | -------------------------------------------------------------------------------- /kd-shop-ui/src/components/Logos.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 32 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/OrdersService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | import com.lvr.kdshop.pojo.Orders; 4 | 5 | import java.util.List; 6 | 7 | public interface OrdersService { 8 | /** 9 | * This method was generated by MyBatis Generator. 10 | * This method corresponds to the database table order 11 | * 12 | * @mbggenerated 13 | */ 14 | int insert(Orders record); 15 | 16 | /** 17 | * This method was generated by MyBatis Generator. 18 | * This method corresponds to the database table order 19 | * 20 | * @mbggenerated 21 | */ 22 | List selectAll(); 23 | 24 | 25 | 26 | List selectOrdersByUserId(Integer userId); 27 | 28 | Orders selectOrdersByGoodId(Integer goodId); 29 | 30 | Double getSpendByUserId(String userId); 31 | 32 | Double getIncomeByUserId(String userId); 33 | } 34 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}(); -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Goods.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class Goods { 11 | private Integer id; 12 | 13 | private Integer catelogId; 14 | 15 | private String userId; 16 | 17 | private String name; 18 | 19 | private Float price; 20 | 21 | private Float realPrice; 22 | 23 | private String startTime; 24 | 25 | private String polishTime; 26 | 27 | private String endTime; 28 | 29 | private String firstImage; 30 | 31 | private String phoneNumber; 32 | 33 | private String goodBuyMethod; 34 | 35 | private String goodAddress; 36 | 37 | private Integer viewCount; 38 | 39 | private String describle; 40 | 41 | private Byte status; 42 | 43 | private String sellerNote; 44 | 45 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/common/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.common; 2 | 3 | 4 | import com.lvr.kdshop.util.ResuTree; 5 | import com.lvr.kdshop.util.ResultTable; 6 | 7 | /** 8 | * web层通用数据处理 9 | * 10 | * @author fuce 11 | * @ClassName: BaseController 12 | * @date 2018年8月18日 13 | */ 14 | public class BaseController { 15 | 16 | 17 | 18 | 19 | 20 | /** 21 | * 返回 Tree 数据 22 | * 23 | * @param data 24 | * @return 25 | */ 26 | protected static ResuTree dataTree(Object data) { 27 | ResuTree resuTree = new ResuTree(); 28 | resuTree.setData(data); 29 | return resuTree; 30 | } 31 | 32 | /** 33 | * 返回数据表格数据 34 | * 35 | * @param data 表格分页数据 36 | * @param count 37 | * @return 38 | */ 39 | protected static ResultTable pageTable(Object data, long count) { 40 | return ResultTable.pageTable(count, data); 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /kd-shop-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-plus-vite-starter", 3 | "private": true, 4 | "version": "0.1.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "generate": "vite-ssg build", 9 | "preview": "vite preview", 10 | "typecheck": "vue-tsc --noEmit" 11 | }, 12 | "dependencies": { 13 | "axios": "^1.7.7", 14 | "element-plus": "^2.8.5", 15 | "pinia": "^2.2.4", 16 | "vue": "^3.5.12", 17 | "vue-router": "^4.4.5", 18 | "zod": "^3.23.8" 19 | }, 20 | "devDependencies": { 21 | "@iconify-json/ep": "^1.1.15", 22 | "@types/node": "^20.11.30", 23 | "@vitejs/plugin-vue": "^5.0.4", 24 | "sass": "^1.79.3", 25 | "typescript": "^5.4.3", 26 | "unocss": "^0.58.6", 27 | "unplugin-auto-import": "^0.18.3", 28 | "unplugin-vue-components": "^0.26.0", 29 | "vite": "^5.2.5", 30 | "vite-ssg": "^0.23.6", 31 | "vue-tsc": "^2.0.7" 32 | }, 33 | "license": "MIT" 34 | } 35 | -------------------------------------------------------------------------------- /kd-shop-ui/public/favicon.svg: -------------------------------------------------------------------------------- 1 | element plus-logo-small 副本 -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.ie&&t.ie<=11?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}(); -------------------------------------------------------------------------------- /kd-shop-ui/public/element-plus-logo-small.svg: -------------------------------------------------------------------------------- 1 | element plus-logo-small 副本 -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/OrdersMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Orders; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface OrdersMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table order 12 | * 13 | * @mbggenerated 14 | */ 15 | int insert(Orders record); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table order 20 | * 21 | * @mbggenerated 22 | */ 23 | List selectAll(); 24 | 25 | 26 | List selectOrdersByUserId(@Param("userId") Integer userId); 27 | 28 | Orders selectOrdersByGoodId(@Param("goodId") Integer goodId); 29 | 30 | Double getSpendByUserId(@Param("userId") String userId); 31 | 32 | Double getIncomeByUserId(@Param("userId") String userId); 33 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/constant/StatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.constant; 2 | 3 | public enum StatusEnum { 4 | FAIL(100, "失败"), 5 | SYSTEM_ERROR(101, "系统错误"), 6 | PARAM_ERROR(102, "参数错误"), 7 | EXCEED_MIN(103, "超过最小值"), 8 | EXCEED_MAX(104, "超过最大值"), 9 | EMPTY(105, "字段为空"), 10 | SUCCESS(200, "成功"), 11 | CREATED(201, "操作成功"), 12 | ACCEPTED(202, "已接收"), 13 | NOT_FOUND(203, "未找到"), 14 | NO_CONTENT(204, "没有内容"), 15 | TOKEN_IS_EXPIRED(401, "未登录或登录状态已过期"), 16 | UNAUTHORIZED(403, "未授权"), 17 | AUTHORIZATION_INVALID(301, "授权无效"); 18 | 19 | /** 20 | * 响应状态码 21 | */ 22 | private final int code; 23 | 24 | /** 25 | * 响应提示 26 | */ 27 | private final String msg; 28 | 29 | StatusEnum(int code, String msg) { 30 | this.code = code; 31 | this.msg = msg; 32 | } 33 | 34 | public int getCode() { 35 | return code; 36 | } 37 | 38 | public String getMsg() { 39 | return msg; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CatelogService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | import com.lvr.kdshop.business.utils.PageRequest; 5 | import com.lvr.kdshop.business.utils.PageResult; 6 | import com.lvr.kdshop.pojo.Catelog; 7 | 8 | import java.util.HashMap; 9 | import java.util.List; 10 | 11 | public interface CatelogService { 12 | 13 | int deleteByPrimaryKey(Integer id); 14 | 15 | int insert(Catelog record); 16 | 17 | Catelog selectByPrimaryKey(Integer id); 18 | 19 | List selectAll(); 20 | 21 | public PageResult findPage(String keyword, PageRequest pageRequest); 22 | 23 | int updateByPrimaryKey(Catelog record); 24 | 25 | List getAllCatelogByStatus(Byte status); 26 | 27 | HashMap getAllCatelogWithOptions(); 28 | 29 | // int getCount(Catelog catelog); 30 | 31 | // int updateCatelogNum(Integer id, Integer number); 32 | 33 | List searchCatelogByName(String name); 34 | } 35 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/count.js: -------------------------------------------------------------------------------- 1 | layui.define(['jquery', 'element'], function(exports) { 2 | "use strict"; 3 | 4 | var MOD_NAME = 'count'; 5 | 6 | var count = new function() { 7 | 8 | this.up = function(targetEle, options) { 9 | 10 | options = options || {}; 11 | 12 | var $this = document.getElementById(targetEle), 13 | time = options.time, 14 | finalNum = options.num, 15 | regulator = options.regulator, 16 | step = finalNum / (time / regulator), 17 | count = 0.00, 18 | initial = 0; 19 | 20 | 21 | var timer = setInterval(function() { 22 | count = count + step; 23 | 24 | if (count >= finalNum) { 25 | clearInterval(timer); 26 | count = finalNum; 27 | } 28 | //t未发生改变的话就直接返回 29 | //避免调用text函数,提高DOM性能 30 | var t = count.toFixed(options.bit?options.bit:0);; 31 | 32 | if (t == initial) return; 33 | initial = t; 34 | $this.innerHTML = initial; 35 | }, 30); 36 | } 37 | 38 | } 39 | exports(MOD_NAME, count); 40 | }); 41 | -------------------------------------------------------------------------------- /kd-shop-ui/src/styles/element/index.scss: -------------------------------------------------------------------------------- 1 | $--colors: ( 2 | "primary": ( 3 | "base": green, 4 | ), 5 | "success": ( 6 | "base": #21ba45, 7 | ), 8 | "warning": ( 9 | "base": #f2711c, 10 | ), 11 | "danger": ( 12 | "base": #db2828, 13 | ), 14 | "error": ( 15 | "base": #db2828, 16 | ), 17 | "info": ( 18 | "base": #42b8dd, 19 | ), 20 | ); 21 | 22 | // we can add this to custom namespace, default is 'el' 23 | @forward "element-plus/theme-chalk/src/mixins/config.scss" with ( 24 | $namespace: "ep" 25 | ); 26 | 27 | // You should use them in scss, because we calculate it by sass. 28 | // comment next lines to use default color 29 | @forward "element-plus/theme-chalk/src/common/var.scss" with ( 30 | // do not use same name, it will override. 31 | $colors: $--colors, 32 | $button-padding-horizontal: ("default": 50px) 33 | ); 34 | 35 | // if you want to import all 36 | // @use "element-plus/theme-chalk/src/index.scss" as *; 37 | 38 | // You can comment it to hide debug info. 39 | // @debug $--colors; 40 | 41 | // custom dark variables 42 | @use "./dark.scss"; 43 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["ui/default/content.mobile.css"],"names":[],"mappings":";;;;;;AAMA,yEAEE,iBAAkB,MAClB,QAAS,aACT,QAAS,GACT,SAAU,SAEZ,KACE,yBAA0B,KAE5B,SAEE,UAAW,KAEb,eACE,UAAW,IAEb,KACE,YAAa,WAEf,MACE,gBAAiB","file":"content.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {\n /* Note: this file is used inside the content, so isn't part of theming */\n background-color: green;\n display: inline-block;\n opacity: 0.5;\n position: absolute;\n}\nbody {\n -webkit-text-size-adjust: none;\n}\nbody img {\n /* this is related to the content margin */\n max-width: 96vw;\n}\nbody table img {\n max-width: 95%;\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n"]} -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | /*# sourceMappingURL=content.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["ui/dark/content.mobile.css"],"names":[],"mappings":";;;;;;AAMA,yEAEE,iBAAkB,MAClB,QAAS,aACT,QAAS,GACT,SAAU,SAEZ,KACE,yBAA0B,KAE5B,SAEE,UAAW,KAEb,eACE,UAAW,IAEb,KACE,YAAa,WAEf,MACE,gBAAiB","file":"content.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {\n /* Note: this file is used inside the content, so isn't part of theming */\n background-color: green;\n display: inline-block;\n opacity: 0.5;\n position: absolute;\n}\nbody {\n -webkit-text-size-adjust: none;\n}\nbody img {\n /* this is related to the content margin */\n max-width: 96vw;\n}\nbody table img {\n max-width: 95%;\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n"]} -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/pear.js: -------------------------------------------------------------------------------- 1 | window.rootPath2 = (function(src) { 2 | src = document.scripts[document.scripts.length - 1].src; 3 | return src.substring(0, src.lastIndexOf("/") + 1); 4 | })(); 5 | 6 | layui.config({ 7 | base: rootPath2 + "module/", 8 | version: "3.6.8" 9 | }).extend({ 10 | admin: "admin", 11 | menu: "menu", 12 | frame: "frame", 13 | tab: "tab", 14 | echarts: "echarts", 15 | echartsTheme: "echartsTheme", 16 | hash: "hash", 17 | document: "document", 18 | select: "select", 19 | drawer: "drawer", 20 | notice: "notice", 21 | step:"step", 22 | tag:"tag", 23 | popup:"popup", 24 | iconPicker:"iconPicker", 25 | treetable:"treetable", 26 | dtree:"dtree", 27 | area:"area", 28 | count:"count", 29 | topBar: "topBar", 30 | button: "button", 31 | design: "design", 32 | common: "common", 33 | eleTree: "eleTree", 34 | dictionary: 'dictionary', 35 | json: 'json', 36 | cropper:"cropper", 37 | yaml:"yaml", 38 | theme: "theme", 39 | message: "message" // 通知组件 40 | }).use(['layer', 'theme'], function () { 41 | layui.theme.changeTheme(window, false); 42 | }); 43 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/pear.all.js: -------------------------------------------------------------------------------- 1 | window.rootPath = (function(src) { 2 | src = document.scripts[document.scripts.length - 1].src; 3 | return src.substring(0, src.lastIndexOf("/") + 1); 4 | })(); 5 | 6 | layui.config({ 7 | base: rootPath + "module/", 8 | version: "3.6.8" 9 | }).extend({ 10 | admin: "admin", 11 | menu: "menu", 12 | frame: "frame", 13 | tab: "tab", 14 | echarts: "echarts", 15 | echartsTheme: "echartsTheme", 16 | hash: "hash", 17 | document: "document", 18 | select: "select", 19 | drawer: "drawer", 20 | notice: "notice", 21 | step:"step", 22 | tag:"tag", 23 | popup:"popup", 24 | iconPicker:"iconPicker", 25 | treetable:"treetable", 26 | dtree:"dtree", 27 | area:"area", 28 | count:"count", 29 | topBar: "topBar", 30 | button: "button", 31 | design: "design", 32 | common: "common", 33 | eleTree: "eleTree", 34 | dictionary: 'dictionary', 35 | json: 'json', 36 | cropper:"cropper", 37 | yaml: "yaml", 38 | theme: "theme", 39 | message: "message" // 通知组件 40 | }).use(['layer', 'theme'], function () { 41 | layui.theme.changeTheme(window, false); 42 | }); 43 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | /*# sourceMappingURL=content.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/message.css: -------------------------------------------------------------------------------- 1 | .pear-notice .layui-this { 2 | color: #5FB878 !important; 3 | } 4 | 5 | .pear-notice li { 6 | border-right: 1px solid whitesmoke; 7 | } 8 | 9 | .pear-notice * { 10 | color: dimgray !important; 11 | } 12 | 13 | .pear-notice{ 14 | width: 285px!important; 15 | } 16 | 17 | .pear-notice span{ 18 | margin-left: 20px; 19 | font-size: 13px; 20 | } 21 | 22 | .pear-notice img{ 23 | margin-left: 8px; 24 | width: 33px!important; 25 | height: 33px!important; 26 | border-radius: 50px; 27 | } 28 | 29 | .pear-notice-item{ 30 | height: 45px!important; 31 | line-height: 45px!important; 32 | } 33 | 34 | .pear-notice .layui-tab-title{ 35 | border: whitesmoke; 36 | } 37 | 38 | 39 | /** 滚动条样式 */ 40 | .pear-notice *::-webkit-scrollbar{width:0px;height:0px;} 41 | .pear-notice *::-webkit-scrollbar-track{background: white;border-radius:2px;} 42 | .pear-notice *::-webkit-scrollbar-thumb{background: #E6E6E6;border-radius:2px;} 43 | .pear-notice *::-webkit-scrollbar-thumb:hover{background: #E6E6E6;} 44 | .pear-notice *::-webkit-scrollbar-corner{background: #f6f6f6;} 45 | 46 | 47 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.SysUser; 5 | 6 | import java.util.List; 7 | 8 | public interface UserService { 9 | 10 | int deleteByPrimaryKey(String id); 11 | 12 | int insert(SysUser record); 13 | 14 | SysUser selectByPrimaryKey(String id); 15 | 16 | List selectAll(); 17 | 18 | int updateByPrimaryKey(SysUser record); 19 | 20 | int updateLastLoginByPrimaryKey(SysUser record); 21 | 22 | int updateByPrimaryKeySelective(SysUser record); 23 | 24 | /** 25 | * 通过用户名查询用户 26 | * 27 | * @param userName 用户名 28 | * @return 用户对象信息 29 | */ 30 | public SysUser selectUserByUserName(String userName); 31 | 32 | SysUser getUserByPhone(String phone); 33 | 34 | List getUserList(); 35 | 36 | int updateImgUrl(String id, String url); 37 | 38 | Integer checkUserByPhone(String phone); 39 | 40 | int updatePasswordByPrimaryKey(Integer uid, String password); 41 | 42 | List searchUserByNameOrPhone(String name, String phone); 43 | } 44 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/button.js: -------------------------------------------------------------------------------- 1 | layui.define(['jquery', 'element', 'util'], function(exports) { 2 | "use strict"; 3 | 4 | var MOD_NAME = 'button', 5 | $ = layui.jquery, 6 | util = layui.util, 7 | element = layui.element; 8 | 9 | var button = function(opt) { 10 | this.option = opt; 11 | }; 12 | 13 | button.prototype.load = function(opt) { 14 | //默认配置值 15 | var option = { 16 | elem: opt.elem, 17 | time: opt.time ? opt.time : false, 18 | done: opt.done ? opt.done : function(){} 19 | } 20 | var load = $(option.elem).text(); 21 | $(option.elem).html(""); 22 | var buttons = $(option.elem); 23 | if (option.time == "") { 24 | } else { 25 | setTimeout(function() { 26 | buttons.html(load); 27 | option.done(); 28 | }, option.time); 29 | } 30 | option.text = load; 31 | return new button(option); 32 | } 33 | 34 | button.prototype.stop = function(success) { 35 | $(this.option.elem).html(this.option.text); 36 | success(); 37 | } 38 | 39 | exports(MOD_NAME, new button()); 40 | }); 41 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/JSONResult.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | import com.lvr.kdshop.constant.StatusEnum; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | @AllArgsConstructor 11 | public class JSONResult { 12 | private int code; 13 | private String msg; 14 | private Object data; 15 | 16 | /** 17 | * 成功 18 | * @return 19 | */ 20 | public static JSONResult success(String msg) { 21 | return new JSONResult(StatusEnum.SUCCESS.getCode(), msg,null); 22 | } 23 | 24 | public static JSONResult success(String message, Object obj) { 25 | return new JSONResult(StatusEnum.SUCCESS.getCode(), message, obj); 26 | } 27 | 28 | /** 29 | * 失败 30 | * @param message 31 | * @return 32 | */ 33 | public static JSONResult fail(int code, String message) { 34 | return new JSONResult(code, message, null); 35 | } 36 | public static JSONResult fail(int code, String message, Object obj) { 37 | return new JSONResult(code, message, obj); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/java/com/lvr/kdshop/web/config/locale/MyLocaleResolver.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.web.config.locale; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.springframework.web.servlet.LocaleResolver; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | import java.util.Locale; 9 | 10 | public class MyLocaleResolver implements LocaleResolver { 11 | @Override 12 | public Locale resolveLocale(HttpServletRequest request) { 13 | //获取请求中的参数 14 | String language = request.getParameter("l"); 15 | 16 | //获取默认的 17 | Locale locale = Locale.getDefault(); 18 | 19 | //解析获取到的参数 20 | if (!StringUtils.isEmpty(language)){ //如果language这个不是空的 21 | //开始解析 zh_CN 22 | String[] s = language.split("_"); 23 | //如果获取到参数就使用获取到的参数 24 | return new Locale(s[0],s[1]); 25 | } 26 | //如果没有获取到参数就是用默认的参数 27 | return locale; 28 | } 29 | 30 | @Override 31 | public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/popup.js: -------------------------------------------------------------------------------- 1 | layui.define(['layer', 'jquery', 'element'], function(exports) { 2 | "use strict"; 3 | 4 | var MOD_NAME = 'popup', 5 | $ = layui.jquery, 6 | layer = layui.layer, 7 | element = layui.element; 8 | 9 | var popup = new function() { 10 | 11 | this.success = function(msg) { 12 | layer.msg(msg, { 13 | icon: 1, 14 | time: 1000 15 | }) 16 | }, 17 | this.failure = function(msg) { 18 | layer.msg(msg, { 19 | icon: 2, 20 | time: 1000 21 | }) 22 | }, 23 | this.warning = function(msg) { 24 | layer.msg(msg, { 25 | icon: 3, 26 | time: 1000 27 | }) 28 | }, 29 | this.success = function(msg, callback) { 30 | layer.msg(msg, { 31 | icon: 1, 32 | time: 1000 33 | }, callback); 34 | }, 35 | this.failure = function(msg, callback) { 36 | layer.msg(msg, { 37 | icon: 2, 38 | time: 1000 39 | }, callback); 40 | }, 41 | this.warning = function(msg, callback) { 42 | layer.msg(msg, { 43 | icon: 3, 44 | time: 1000 45 | }, callback); 46 | } 47 | }; 48 | exports(MOD_NAME, popup); 49 | }) 50 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/css/signin.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | } 5 | 6 | body { 7 | display: -ms-flexbox; 8 | display: -webkit-box; 9 | display: flex; 10 | -ms-flex-align: center; 11 | -ms-flex-pack: center; 12 | -webkit-box-align: center; 13 | align-items: center; 14 | -webkit-box-pack: center; 15 | justify-content: center; 16 | padding-top: 40px; 17 | padding-bottom: 40px; 18 | /*background-color: #f5f5f5;*/ 19 | } 20 | 21 | .form-signin { 22 | width: 100%; 23 | max-width: 330px; 24 | padding: 15px; 25 | margin: 0 auto; 26 | } 27 | .form-signin .checkbox { 28 | font-weight: 400; 29 | } 30 | .form-signin .form-control { 31 | position: relative; 32 | box-sizing: border-box; 33 | height: auto; 34 | padding: 10px; 35 | font-size: 16px; 36 | } 37 | .form-signin .form-control:focus { 38 | z-index: 2; 39 | } 40 | .form-signin input[type="email"] { 41 | margin-bottom: -1px; 42 | border-bottom-right-radius: 0; 43 | border-bottom-left-radius: 0; 44 | } 45 | .form-signin input[type="password"] { 46 | margin-bottom: 10px; 47 | border-top-left-radius: 0; 48 | border-top-right-radius: 0; 49 | } 50 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/img/bootstrap-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/document/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | @media screen{html{background:#f4f4f4}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | /*# sourceMappingURL=content.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

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

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/dark/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} 8 | /*# sourceMappingURL=content.min.css.map */ 9 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear.all.css: -------------------------------------------------------------------------------- 1 | @import url("../../layui/css/layui.css"); 2 | 3 | @import url("pear-module/dtree/font/dtreefont.css"); 4 | @import url("pear-module/icon/iconfont.css"); 5 | @import url("pear-module/dtree/dtree.css"); 6 | @import url("pear-module/iconPicker.css"); 7 | @import url("pear-module/eleTree.css"); 8 | @import url("pear-module/cropper.css"); 9 | @import url("pear-module/message.css"); 10 | @import url("pear-module/treetable.css"); 11 | @import url("pear-module/topBar.css"); 12 | @import url("pear-module/select.css"); 13 | @import url("pear-module/layout.css"); 14 | @import url("pear-module/notice.css"); 15 | @import url("pear-module/button.css"); 16 | @import url("pear-module/table.css"); 17 | @import url("pear-module/frame.css"); 18 | @import url("pear-module/layer.css"); 19 | @import url("pear-module/menu.css"); 20 | @import url("pear-module/form.css"); 21 | @import url("pear-module/link.css"); 22 | @import url("pear-module/form.css"); 23 | @import url("pear-module/code.css"); 24 | @import url("pear-module/link.css"); 25 | @import url("pear-module/json.css"); 26 | @import url("pear-module/step.css"); 27 | @import url("pear-module/tab.css"); 28 | @import url("pear-module/tag.css"); 29 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear.css: -------------------------------------------------------------------------------- 1 | @import url("../../layui/css/layui.css"); 2 | 3 | @import url("pear-module/dtree/font/dtreefont.css"); 4 | @import url("pear-module/icon/iconfont.css"); 5 | @import url("pear-module/dtree/dtree.css"); 6 | @import url("pear-module/iconPicker.css"); 7 | @import url("pear-module/eleTree.css"); 8 | @import url("pear-module/cropper.css"); 9 | @import url("pear-module/message.css"); 10 | @import url("pear-module/treetable.css"); 11 | @import url("pear-module/topBar.css"); 12 | @import url("pear-module/select.css"); 13 | @import url("pear-module/layout.css"); 14 | @import url("pear-module/notice.css"); 15 | @import url("pear-module/button.css"); 16 | @import url("pear-module/table.css"); 17 | @import url("pear-module/frame.css"); 18 | @import url("pear-module/layer.css"); 19 | @import url("pear-module/menu.css"); 20 | @import url("pear-module/form.css"); 21 | @import url("pear-module/link.css"); 22 | @import url("pear-module/form.css"); 23 | @import url("pear-module/code.css"); 24 | @import url("pear-module/link.css"); 25 | @import url("pear-module/json.css"); 26 | @import url("pear-module/step.css"); 27 | @import url("pear-module/tab.css"); 28 | @import url("pear-module/tag.css"); 29 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/ReportExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import java.util.List; 4 | 5 | public class ReportExtend { 6 | private Report report; 7 | private Goods goods; 8 | private List images; 9 | private SysUser user; 10 | 11 | public ReportExtend() { 12 | } 13 | 14 | public ReportExtend(Report report, Goods goods, List images, SysUser user) { 15 | this.report = report; 16 | this.goods = goods; 17 | this.images = images; 18 | this.user = user; 19 | } 20 | 21 | public Report getReport() { 22 | return report; 23 | } 24 | 25 | public void setReport(Report report) { 26 | this.report = report; 27 | } 28 | 29 | public Goods getGoods() { 30 | return goods; 31 | } 32 | 33 | public void setGoods(Goods goods) { 34 | this.goods = goods; 35 | } 36 | 37 | public List getImages() { 38 | return images; 39 | } 40 | 41 | public void setImages(List images) { 42 | this.images = images; 43 | } 44 | 45 | public SysUser getUser() { 46 | return user; 47 | } 48 | 49 | public void setUser(SysUser user) { 50 | this.user = user; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/SysUser.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class SysUser { 13 | 14 | private Integer id; 15 | 16 | private String userId; 17 | 18 | private String phone; 19 | 20 | private String username; 21 | 22 | private String password; 23 | 24 | private String createAt; 25 | 26 | private String lastLogin; 27 | 28 | private Byte status; 29 | 30 | private String birthday; 31 | 32 | private String sex; 33 | 34 | private String imgUrl; 35 | 36 | private String residence; 37 | 38 | private String signature; 39 | 40 | private String roleId; 41 | 42 | /** 角色对象 */ 43 | private List roles; 44 | 45 | public SysUser(String userId, String username) { 46 | this.userId = userId; 47 | this.username = username; 48 | } 49 | 50 | public String getPhone() { 51 | if(this.phone != null && this.phone != ""){ 52 | this.phone = this.phone.replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2"); 53 | } 54 | return this.phone; 55 | } 56 | 57 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/pojo/CatelogExtend.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.pojo; 2 | 3 | import java.util.List; 4 | 5 | public class CatelogExtend { 6 | private Goods goods; 7 | private Catelog catelog; 8 | private SysUser user; 9 | private List images; 10 | 11 | public CatelogExtend() { 12 | } 13 | 14 | public CatelogExtend(Goods goods, Catelog catelog, SysUser user, List images) { 15 | this.goods = goods; 16 | this.catelog = catelog; 17 | this.user = user; 18 | this.images = images; 19 | } 20 | 21 | public Goods getGoods() { 22 | return goods; 23 | } 24 | 25 | public void setGoods(Goods goods) { 26 | this.goods = goods; 27 | } 28 | 29 | public Catelog getCatelog() { 30 | return catelog; 31 | } 32 | 33 | public void setCatelog(Catelog catelog) { 34 | this.catelog = catelog; 35 | } 36 | 37 | public SysUser getUser() { 38 | return user; 39 | } 40 | 41 | public void setUser(SysUser user) { 42 | this.user = user; 43 | } 44 | 45 | public List getImages() { 46 | return images; 47 | } 48 | 49 | public void setImages(List images) { 50 | this.images = images; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/resources/mapper/RoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | select distinct r.id, r.role_id, r.role_name, r.commet, r.create_date 16 | from roles r 17 | left join user_role ur on ur.role_id = r.role_id 18 | left join user u on u.user_id = ur.user_id 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/common/FieldFill.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.common;/* 2 | * Copyright (c) 2011-2021, baomidou (jobob@qq.com). 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * 字段填充策略枚举类 19 | * 20 | *

21 | * 判断注入的 insert 和 update 的 sql 脚本是否在对应情况下忽略掉字段的 if 标签生成 22 | * ...... 23 | * 判断优先级比 {@link FieldStrategy} 高 24 | *

25 | * 26 | * @author hubin 27 | * @since 2017-06-27 28 | */ 29 | public enum FieldFill { 30 | /** 31 | * 默认不处理 32 | */ 33 | DEFAULT, 34 | /** 35 | * 插入时填充字段 36 | */ 37 | INSERT, 38 | /** 39 | * 更新时填充字段 40 | */ 41 | UPDATE, 42 | /** 43 | * 插入和更新时填充字段 44 | */ 45 | INSERT_UPDATE 46 | } 47 | -------------------------------------------------------------------------------- /kd-shop-ui/src/store/user.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from "pinia"; 2 | import { Login } from "~/api/user"; 3 | import { RequestData } from "~/types/user_type"; 4 | 5 | export const useUserStore = defineStore("user", { 6 | state: () => ({ 7 | username: "", 8 | role: 'STUDENT', 9 | }), 10 | getters: { 11 | 12 | }, 13 | actions: { 14 | //执行登录请求 15 | LoginAction(requestData: RequestData) { 16 | return new Promise((resolve) => { 17 | Login(requestData).then((res) => { 18 | resolve(res) 19 | }).catch(err => { 20 | resolve(err) 21 | }) 22 | }); 23 | }, 24 | testlogin(requestData: RequestData) { 25 | let res: any; 26 | if(requestData.username === '13212341234' && requestData.password === '123456aa') { 27 | this.username = requestData.username 28 | this.role = 'STUDENT' 29 | res = { code: 200, msg: '登录成功', role: 'STUDENT' } 30 | } else { 31 | res = { code: 400, msg: '账号或密码错误' } 32 | } 33 | return new Promise((resolve) => { 34 | resolve(res) 35 | }) 36 | 37 | } 38 | }, 39 | }); -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}(); -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/MD5.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | import java.security.MessageDigest; 4 | 5 | /** 6 | * MD5加密类 7 | * @描述:密码加密 8 | * 9 | */ 10 | public final class MD5 { 11 | 12 | /** 13 | * Md5加密 14 | * @param s 15 | * @return 16 | */ 17 | public final static String md5(String s) { 18 | char hexDigits[] = { '0', '1', '2', '3', '4', 19 | '5', '6', '7', '8', '9', 20 | 'A', 'B', 'C', 'D', 'E', 'F'}; 21 | try { 22 | byte[] btInput = s.getBytes(); 23 | MessageDigest mdInst = MessageDigest.getInstance("MD5"); 24 | mdInst.update(btInput); 25 | byte[] md = mdInst.digest(); 26 | int j = md.length; 27 | char str[] = new char[j * 2]; 28 | int k = 0; 29 | for (int i = 0; i < j; i++) { 30 | byte byte0 = md[i]; 31 | str[k++] = hexDigits[byte0 >>> 4 & 0xf]; 32 | str[k++] = hexDigits[byte0 & 0xf]; 33 | } 34 | return new String(str); 35 | } 36 | catch (Exception e) { 37 | e.printStackTrace(); 38 | return null; 39 | } 40 | } 41 | 42 | public static void main(String[] args) { 43 | System.out.println(MD5.md5("111111")); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ReplyMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Reply; 5 | 6 | import java.util.List; 7 | 8 | public interface ReplyMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table reply 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table reply 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Reply record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table reply 28 | * 29 | * @mbggenerated 30 | */ 31 | Reply selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table reply 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table reply 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Reply record); 48 | } -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.5.2 9 | 10 | 11 | 12 | com.lvr 13 | kd-shop 14 | 0.0.1-SNAPSHOT 15 | 16 | kd-shop 17 | 科大二手工坊2.0 18 | pom 19 | 20 | 21 | 1.8 22 | 23 | 24 | 25 | 26 | org.projectlombok 27 | lombok 28 | 1.18.20 29 | provided 30 | 31 | 32 | 33 | 34 | 35 | kd-shop-web 36 | kd-shop-common 37 | kd-shop-business 38 | 39 | 40 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/NoticeMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Notice; 4 | 5 | import java.util.List; 6 | 7 | public interface NoticeMapper { 8 | /** 9 | * This method was generated by MyBatis Generator. 10 | * This method corresponds to the database table notice 11 | * 12 | * @mbggenerated 13 | */ 14 | int deleteByPrimaryKey(Integer id); 15 | 16 | /** 17 | * This method was generated by MyBatis Generator. 18 | * This method corresponds to the database table notice 19 | * 20 | * @mbggenerated 21 | */ 22 | int insert(Notice record); 23 | 24 | /** 25 | * This method was generated by MyBatis Generator. 26 | * This method corresponds to the database table notice 27 | * 28 | * @mbggenerated 29 | */ 30 | Notice selectByPrimaryKey(Integer id); 31 | 32 | /** 33 | * This method was generated by MyBatis Generator. 34 | * This method corresponds to the database table notice 35 | * 36 | * @mbggenerated 37 | */ 38 | List selectAll(); 39 | 40 | /** 41 | * This method was generated by MyBatis Generator. 42 | * This method corresponds to the database table notice 43 | * 44 | * @mbggenerated 45 | */ 46 | int updateByPrimaryKey(Notice record); 47 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body { 8 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 9 | line-height: 1.4; 10 | margin: 1rem; 11 | } 12 | table { 13 | border-collapse: collapse; 14 | } 15 | table th, 16 | table td { 17 | border: 1px solid #ccc; 18 | padding: 0.4rem; 19 | } 20 | figure { 21 | display: table; 22 | margin: 1rem auto; 23 | } 24 | figure figcaption { 25 | color: #999; 26 | display: block; 27 | margin-top: 0.25rem; 28 | text-align: center; 29 | } 30 | hr { 31 | border-color: #ccc; 32 | border-style: solid; 33 | border-width: 1px 0 0 0; 34 | } 35 | code { 36 | background-color: #e8e8e8; 37 | border-radius: 3px; 38 | padding: 0.1rem 0.2rem; 39 | } 40 | .mce-content-body:not([dir=rtl]) blockquote { 41 | border-left: 2px solid #ccc; 42 | margin-left: 1.5rem; 43 | padding-left: 1rem; 44 | } 45 | .mce-content-body[dir=rtl] blockquote { 46 | border-right: 2px solid #ccc; 47 | margin-right: 1.5rem; 48 | padding-right: 1rem; 49 | } 50 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body { 8 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 9 | line-height: 1.4; 10 | margin: 1rem auto; 11 | max-width: 900px; 12 | } 13 | table { 14 | border-collapse: collapse; 15 | } 16 | table th, 17 | table td { 18 | border: 1px solid #ccc; 19 | padding: 0.4rem; 20 | } 21 | figure { 22 | display: table; 23 | margin: 1rem auto; 24 | } 25 | figure figcaption { 26 | color: #999; 27 | display: block; 28 | margin-top: 0.25rem; 29 | text-align: center; 30 | } 31 | hr { 32 | border-color: #ccc; 33 | border-style: solid; 34 | border-width: 1px 0 0 0; 35 | } 36 | code { 37 | background-color: #e8e8e8; 38 | border-radius: 3px; 39 | padding: 0.1rem 0.2rem; 40 | } 41 | .mce-content-body:not([dir=rtl]) blockquote { 42 | border-left: 2px solid #ccc; 43 | margin-left: 1.5rem; 44 | padding-left: 1rem; 45 | } 46 | .mce-content-body[dir=rtl] blockquote { 47 | border-right: 2px solid #ccc; 48 | margin-right: 1.5rem; 49 | padding-right: 1rem; 50 | } 51 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/templates/commons/include.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/ex/ServiceException.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.ex; 2 | 3 | public class ServiceException extends RuntimeException { 4 | private static final long serialVersionUID = 1L; 5 | 6 | /** 7 | * 错误码 8 | */ 9 | private Integer code; 10 | 11 | /** 12 | * 错误提示 13 | */ 14 | private String message; 15 | 16 | /** 17 | * 错误明细,内部调试错误 18 | * 19 | */ 20 | private String detailMessage; 21 | 22 | /** 23 | * 空构造方法,避免反序列化问题 24 | */ 25 | public ServiceException() 26 | { 27 | } 28 | 29 | public ServiceException(String message) 30 | { 31 | this.message = message; 32 | } 33 | 34 | public ServiceException(String message, Integer code) 35 | { 36 | this.message = message; 37 | this.code = code; 38 | } 39 | 40 | public String getDetailMessage() 41 | { 42 | return detailMessage; 43 | } 44 | 45 | public String getMessage() 46 | { 47 | return message; 48 | } 49 | 50 | public Integer getCode() 51 | { 52 | return code; 53 | } 54 | 55 | public ServiceException setMessage(String message) 56 | { 57 | this.message = message; 58 | return this; 59 | } 60 | 61 | public ServiceException setDetailMessage(String detailMessage) 62 | { 63 | this.detailMessage = detailMessage; 64 | return this; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/json.css: -------------------------------------------------------------------------------- 1 | /* Root element */ 2 | .json-document { 3 | padding: 1em 2em; 4 | } 5 | 6 | /* Syntax highlighting for JSON objects */ 7 | ul.json-dict, ol.json-array { 8 | list-style-type: none; 9 | margin: 0 0 0 1px; 10 | border-left: 1px dotted #ccc; 11 | padding-left: 2em; 12 | } 13 | .json-string { 14 | color: #0B7500; 15 | } 16 | .json-literal { 17 | color: #1A01CC; 18 | font-weight: bold; 19 | } 20 | 21 | /* Toggle button */ 22 | a.json-toggle { 23 | position: relative; 24 | color: inherit; 25 | text-decoration: none; 26 | } 27 | a.json-toggle:focus { 28 | outline: none; 29 | } 30 | a.json-toggle:before { 31 | font-size: 1.1em; 32 | color: #c0c0c0; 33 | content: "\25BC"; /* down arrow */ 34 | position: absolute; 35 | display: inline-block; 36 | width: 1em; 37 | text-align: center; 38 | line-height: 1em; 39 | left: -1.2em; 40 | } 41 | a.json-toggle:hover:before { 42 | color: #aaa; 43 | } 44 | a.json-toggle.collapsed:before { 45 | /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */ 46 | transform: rotate(-90deg); 47 | } 48 | 49 | /* Collapsable placeholder links */ 50 | a.json-placeholder { 51 | color: #aaa; 52 | padding: 0 1em; 53 | text-decoration: none; 54 | } 55 | a.json-placeholder:hover { 56 | text-decoration: underline; 57 | } 58 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/OrdersServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.OrdersMapper; 4 | import com.lvr.kdshop.business.service.OrdersService; 5 | import com.lvr.kdshop.pojo.Orders; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | 12 | @Service("ordersService") 13 | public class OrdersServiceImpl implements OrdersService { 14 | 15 | @Resource 16 | private OrdersMapper ordersMapper; 17 | 18 | @Override 19 | public int insert(Orders record) { 20 | return ordersMapper.insert(record); 21 | } 22 | 23 | @Override 24 | public List selectAll() { 25 | return ordersMapper.selectAll(); 26 | } 27 | 28 | @Override 29 | public List selectOrdersByUserId(Integer userId) { 30 | return ordersMapper.selectOrdersByUserId(userId); 31 | } 32 | 33 | @Override 34 | public Orders selectOrdersByGoodId(Integer goodId) { 35 | return ordersMapper.selectOrdersByGoodId(goodId); 36 | } 37 | 38 | @Override 39 | public Double getSpendByUserId(String userId) { 40 | return ordersMapper.getSpendByUserId(userId); 41 | } 42 | 43 | @Override 44 | public Double getIncomeByUserId(String userId) { 45 | return ordersMapper.getIncomeByUserId(userId); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/ImageServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.ImageMapper; 4 | import com.lvr.kdshop.business.service.ImageService; 5 | import com.lvr.kdshop.pojo.Image; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | @Service("imageService") 12 | public class ImageServiceImpl implements ImageService { 13 | 14 | @Resource 15 | private ImageMapper imageMapper; 16 | 17 | public int deleteByPrimaryKey(Integer id) { 18 | return imageMapper.deleteByPrimaryKey(id); 19 | } 20 | 21 | public int insert(Image record) { 22 | return imageMapper.insert(record); 23 | } 24 | 25 | public Image selectByPrimaryKey(Integer id) { 26 | return imageMapper.selectByPrimaryKey(id); 27 | } 28 | 29 | public List selectAll() { 30 | return imageMapper.selectAll(); 31 | } 32 | 33 | public int updateByPrimaryKey(Image record) { 34 | return imageMapper.updateByPrimaryKey(record); 35 | } 36 | 37 | public List selectByGoodsPrimaryKey(Integer goods_id) { 38 | return imageMapper.selectByGoodsPrimaryKey(goods_id); 39 | } 40 | 41 | public int deleteImagesByGoodsPrimaryKey(Integer goods_id) { 42 | return imageMapper.deleteImagesByGoodsPrimaryKey(goods_id); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /kd-shop-ui/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /kd-shop-ui/src/assets/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Layer 1 16 | 17 | KD. 18 | Shop 19 | 20 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/ReportService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Report; 5 | 6 | import java.util.List; 7 | 8 | public interface ReportService { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table reply 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table reply 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Report record); 24 | 25 | int insertForFeedback(Report record); 26 | 27 | /** 28 | * This method was generated by MyBatis Generator. 29 | * This method corresponds to the database table reply 30 | * 31 | * @mbggenerated 32 | */ 33 | Report selectByPrimaryKey(Integer id); 34 | 35 | /** 36 | * This method was generated by MyBatis Generator. 37 | * This method corresponds to the database table reply 38 | * 39 | * @mbggenerated 40 | */ 41 | List selectAll(); 42 | 43 | /** 44 | * This method was generated by MyBatis Generator. 45 | * This method corresponds to the database table reply 46 | * 47 | * @mbggenerated 48 | */ 49 | int updateByPrimaryKey(Report record); 50 | 51 | List selectReportByGoodsPrimaryKey(Integer gid); 52 | } 53 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/ImageService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Image; 5 | 6 | import java.util.List; 7 | 8 | public interface ImageService { 9 | 10 | /** 11 | * This method was generated by MyBatis Generator. 12 | * This method corresponds to the database table image 13 | * 14 | * @mbggenerated 15 | */ 16 | int deleteByPrimaryKey(Integer id); 17 | 18 | /** 19 | * This method was generated by MyBatis Generator. 20 | * This method corresponds to the database table image 21 | * 22 | * @mbggenerated 23 | */ 24 | int insert(Image record); 25 | 26 | /** 27 | * This method was generated by MyBatis Generator. 28 | * This method corresponds to the database table image 29 | * 30 | * @mbggenerated 31 | */ 32 | Image selectByPrimaryKey(Integer id); 33 | 34 | /** 35 | * This method was generated by MyBatis Generator. 36 | * This method corresponds to the database table image 37 | * 38 | * @mbggenerated 39 | */ 40 | List selectAll(); 41 | 42 | /** 43 | * This method was generated by MyBatis Generator. 44 | * This method corresponds to the database table image 45 | * 46 | * @mbggenerated 47 | */ 48 | int updateByPrimaryKey(Image record); 49 | 50 | List selectByGoodsPrimaryKey(Integer goods_id); 51 | 52 | int deleteImagesByGoodsPrimaryKey(Integer goods_id); 53 | } 54 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/tag.css: -------------------------------------------------------------------------------- 1 | .input-new-tag { 2 | width: 90px; 3 | } 4 | 5 | .input-new-tag input { 6 | height: 100%!important; 7 | border: none; 8 | padding-left: 0px; 9 | } 10 | 11 | .tag .layui-btn .tag-close:hover { 12 | border-radius: 2px; 13 | color: #fff; 14 | } 15 | 16 | .tag .layui-btn .tag-close { 17 | margin-left: 8px; 18 | transition: all .2s; 19 | -webkit-transition: all .2s; 20 | } 21 | .tag-item { 22 | background-color: #5FB878; 23 | color: white; 24 | border: none; 25 | } 26 | 27 | .tag-item:hover { 28 | 29 | color: white; 30 | 31 | } 32 | 33 | .tag-item-normal { 34 | background-color: #5FB878; 35 | color: white; 36 | border: none; 37 | } 38 | 39 | .tag-item-warm { 40 | background-color: #f6ad55; 41 | color: white; 42 | border: none; 43 | } 44 | 45 | .tag-item-danger { 46 | background-color: #f56c6c; 47 | color: white; 48 | border: none; 49 | } 50 | 51 | .tag-item-dark { 52 | background-color: #525252; 53 | color: white; 54 | border: none; 55 | } 56 | 57 | .tag-item-primary { 58 | background-color: white !important; 59 | color: dimgray; 60 | border: 1px solid dimgray; 61 | } 62 | 63 | .tag-item-normal:hover { 64 | 65 | color: white !important; 66 | } 67 | 68 | .tag-item-warm:hover { 69 | 70 | color: white; 71 | } 72 | 73 | .tag-item-danger:hover { 74 | 75 | color: white; 76 | } 77 | 78 | .tag-item-dark:hover { 79 | 80 | color: white; 81 | } 82 | 83 | .tag-item-primary:hover { 84 | color: dimgray; 85 | border: 1px solid dimgray; 86 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/document/content.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | @media screen { 8 | html { 9 | background: #f4f4f4; 10 | } 11 | } 12 | body { 13 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 14 | } 15 | @media screen { 16 | body { 17 | background-color: #fff; 18 | box-shadow: 0 0 4px rgba(0, 0, 0, 0.15); 19 | box-sizing: border-box; 20 | margin: 1rem auto 0; 21 | max-width: 820px; 22 | min-height: calc(100vh - 1rem); 23 | padding: 4rem 6rem 6rem 6rem; 24 | } 25 | } 26 | table { 27 | border-collapse: collapse; 28 | } 29 | table th, 30 | table td { 31 | border: 1px solid #ccc; 32 | padding: 0.4rem; 33 | } 34 | figure figcaption { 35 | color: #999; 36 | margin-top: 0.25rem; 37 | text-align: center; 38 | } 39 | hr { 40 | border-color: #ccc; 41 | border-style: solid; 42 | border-width: 1px 0 0 0; 43 | } 44 | .mce-content-body:not([dir=rtl]) blockquote { 45 | border-left: 2px solid #ccc; 46 | margin-left: 1.5rem; 47 | padding-left: 1rem; 48 | } 49 | .mce-content-body[dir=rtl] blockquote { 50 | border-right: 2px solid #ccc; 51 | margin-right: 1.5rem; 52 | padding-right: 1rem; 53 | } 54 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ImageMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Image; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface ImageMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table image 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table image 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Image record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table image 28 | * 29 | * @mbggenerated 30 | */ 31 | Image selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table image 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table image 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Image record); 48 | 49 | List selectByGoodsPrimaryKey(@Param("goods_id") Integer goods_id); 50 | 51 | int deleteImagesByGoodsPrimaryKey(Integer goods_id); 52 | } -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ReportMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Report; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface ReportMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table reply 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table reply 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Report record); 24 | 25 | int insertForFeedback(Report record); 26 | 27 | /** 28 | * This method was generated by MyBatis Generator. 29 | * This method corresponds to the database table reply 30 | * 31 | * @mbggenerated 32 | */ 33 | Report selectByPrimaryKey(Integer id); 34 | 35 | /** 36 | * This method was generated by MyBatis Generator. 37 | * This method corresponds to the database table reply 38 | * 39 | * @mbggenerated 40 | */ 41 | List selectAll(); 42 | 43 | /** 44 | * This method was generated by MyBatis Generator. 45 | * This method corresponds to the database table reply 46 | * 47 | * @mbggenerated 48 | */ 49 | int updateByPrimaryKey(Report record); 50 | 51 | List selectReportByGoodsPrimaryKey(@Param("gid") Integer gid); 52 | 53 | 54 | } -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/WantedServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.WantedMapper; 4 | import com.lvr.kdshop.business.service.WantedService; 5 | import com.lvr.kdshop.pojo.Wanted; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | @Service("wantedService") 12 | public class WantedServiceImpl implements WantedService { 13 | 14 | @Resource 15 | private WantedMapper wantedMapper; 16 | 17 | public int deleteByPrimaryKey(Integer id) { 18 | return wantedMapper.deleteByPrimaryKey(id); 19 | } 20 | 21 | public int insert(Wanted record) { 22 | return wantedMapper.insert(record); 23 | } 24 | 25 | public Wanted selectByPrimaryKey(Integer id) { 26 | return wantedMapper.selectByPrimaryKey(id); 27 | } 28 | 29 | public List selectAll() { 30 | return wantedMapper.selectAll(); 31 | } 32 | 33 | public int updateByPrimaryKey(Wanted record) { 34 | return wantedMapper.updateByPrimaryKey(record); 35 | } 36 | 37 | public Wanted selectWant(String uid, Integer gid) { 38 | return wantedMapper.selectWant(uid,gid); 39 | } 40 | 41 | public List selectWantByUserId(String uid) { 42 | return wantedMapper.selectWantByUserId(uid); 43 | } 44 | 45 | public int deleteWantedByGoodsId(Integer gid) { 46 | return wantedMapper.deleteWantedByGoodsId(gid); 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/WantedService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Wanted; 5 | 6 | import java.util.List; 7 | 8 | public interface WantedService { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table wanted 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table wanted 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Wanted record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table wanted 28 | * 29 | * @mbggenerated 30 | */ 31 | Wanted selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table wanted 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table wanted 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Wanted record); 48 | 49 | Wanted selectWant(String uid, Integer gid); 50 | 51 | List selectWantByUserId(String uid); 52 | 53 | int deleteWantedByGoodsId(Integer gid); 54 | 55 | 56 | } 57 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/ReportServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.ReportMapper; 4 | import com.lvr.kdshop.business.service.ReportService; 5 | import com.lvr.kdshop.pojo.Report; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | @Service("reportService") 12 | public class ReportServiceImpl implements ReportService { 13 | 14 | @Resource 15 | private ReportMapper reportMapper; 16 | 17 | @Override 18 | public int deleteByPrimaryKey(Integer id) { 19 | return reportMapper.deleteByPrimaryKey(id); 20 | } 21 | 22 | @Override 23 | public int insert(Report record) { 24 | return reportMapper.insert(record); 25 | } 26 | 27 | @Override 28 | public int insertForFeedback(Report record) { 29 | return reportMapper.insertForFeedback(record); 30 | } 31 | 32 | @Override 33 | public Report selectByPrimaryKey(Integer id) { 34 | return reportMapper.selectByPrimaryKey(id); 35 | } 36 | 37 | @Override 38 | public List selectAll() { 39 | return reportMapper.selectAll(); 40 | } 41 | 42 | @Override 43 | public int updateByPrimaryKey(Report record) { 44 | return reportMapper.updateByPrimaryKey(record); 45 | } 46 | 47 | @Override 48 | public List selectReportByGoodsPrimaryKey(Integer gid) { 49 | return reportMapper.selectReportByGoodsPrimaryKey(gid); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/pear.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "logo": { 3 | "title": "springboot-v2", 4 | "image": "static/admin/images/logo.png" 5 | }, 6 | "menu": { 7 | "data": "/admin/getUserMenu", 8 | "accordion": true, 9 | "control": false, 10 | "select": "451003242072117248" 11 | }, 12 | "tab": { 13 | "muiltTab": true, 14 | "keepState": true, 15 | "tabMax": 30, 16 | "index": { 17 | "id": "451003242072117248", 18 | "href": "/ServiceController/view", 19 | "title": "首页" 20 | } 21 | }, 22 | "theme": { 23 | "defaultColor": "2", 24 | "defaultMenu": "dark-theme", 25 | "allowCustom": true 26 | }, 27 | "colors": [{ 28 | "id": "1", 29 | "color": "#FF5722" 30 | }, 31 | { 32 | "id": "2", 33 | "color": "#5FB878" 34 | }, 35 | { 36 | "id": "3", 37 | "color": "#1E9FFF" 38 | }, { 39 | "id": "4", 40 | "color": "#FFB800" 41 | }, { 42 | "id": "5", 43 | "color": "darkgray" 44 | } 45 | ], 46 | "links": [{ 47 | "icon": "layui-icon layui-icon-website", 48 | "title": "官方网站", 49 | "href": "http://www.pearadmin.com" 50 | }, 51 | { 52 | "icon": "layui-icon layui-icon-read", 53 | "title": "开发文档", 54 | "href": "http://www.pearadmin.com/doc/" 55 | }, 56 | { 57 | "icon": "layui-icon layui-icon-fonts-code", 58 | "title": "开源地址", 59 | "href": "https://gitee.com/pear-admin/Pear-Admin-Boot" 60 | }, 61 | { 62 | "icon": "layui-icon layui-icon-release", 63 | "title": "交流社区", 64 | "href": "http://forum.pearadmin.com/" 65 | } 66 | ], 67 | "other": { 68 | "autoHead": false, 69 | "keepLoad": 1200 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/hr/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var register = function (editor) { 15 | editor.addCommand('InsertHorizontalRule', function () { 16 | editor.execCommand('mceInsertContent', false, '
'); 17 | }); 18 | }; 19 | var Commands = { register: register }; 20 | 21 | var register$1 = function (editor) { 22 | editor.ui.registry.addButton('hr', { 23 | icon: 'horizontal-rule', 24 | tooltip: 'Horizontal line', 25 | onAction: function () { 26 | return editor.execCommand('InsertHorizontalRule'); 27 | } 28 | }); 29 | editor.ui.registry.addMenuItem('hr', { 30 | icon: 'horizontal-rule', 31 | text: 'Horizontal line', 32 | onAction: function () { 33 | return editor.execCommand('InsertHorizontalRule'); 34 | } 35 | }); 36 | }; 37 | var Buttons = { register: register$1 }; 38 | 39 | function Plugin () { 40 | global.add('hr', function (editor) { 41 | Commands.register(editor); 42 | Buttons.register(editor); 43 | }); 44 | } 45 | 46 | Plugin(); 47 | 48 | }()); 49 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CommentsService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Comments; 5 | 6 | import java.util.List; 7 | 8 | public interface CommentsService { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table comments 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table comments 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Comments record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table comments 28 | * 29 | * @mbggenerated 30 | */ 31 | Comments selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table comments 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table comments 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Comments record); 48 | 49 | List selectByUserKeyWithContent(String uid); 50 | 51 | List selectByGoodsId(Integer goodsId); 52 | 53 | List searchCommentsByContent(String content); 54 | } 55 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CarouselService.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service; 2 | 3 | 4 | import com.lvr.kdshop.pojo.Carousel; 5 | 6 | import java.util.List; 7 | 8 | public interface CarouselService { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table reply 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table reply 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Carousel record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table reply 28 | * 29 | * @mbggenerated 30 | */ 31 | Carousel selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table reply 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table reply 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Carousel record); 48 | 49 | int updateStatusByPrimaryKey(Integer id, Byte status); 50 | 51 | List selectCarouselByStatus(Byte status); 52 | 53 | List searchCarouselByTitleOrDescript(String title, String descript); 54 | } 55 | -------------------------------------------------------------------------------- /kd-shop-ui/src/api/request.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | console.log(`====================当前环境:${import.meta.env.VITE_APP_BASE_URL}=======================`); 4 | 5 | 6 | //创建实例 7 | const service = axios.create({ 8 | baseURL: import.meta.env.VITE_APP_BASE_URL, 9 | timeout: 5000, //超时 10 | }); 11 | 12 | //添加请求拦截器 13 | service.interceptors.request.use( 14 | function (config) { 15 | //在发送请求之前做些什么 16 | return config; 17 | }, 18 | function (error) { 19 | console.log(error.request); 20 | const errorData = JSON.parse(error.request.response); 21 | if (errorData.message) { 22 | //判断是否具有message属性 23 | ElMessage({ 24 | message: errorData.message, 25 | type: "error", 26 | }); 27 | } 28 | //对请求错误做些什么 29 | return Promise.reject(errorData); 30 | } 31 | ); 32 | 33 | //添加响 应拦截器 34 | service.interceptors.response.use( 35 | function (response) { 36 | //对响应数据做些什么 37 | console.log("响应数据", response); 38 | const data = response.data; 39 | if (data.resCode === 0) { 40 | return Promise.resolve(data); 41 | } else { 42 | ElMessage({ 43 | message: data.message, 44 | type: "error", 45 | }); 46 | return Promise.reject(data); 47 | } 48 | }, 49 | function (error) { 50 | //对响应错误做些什么 51 | const errorData = JSON.parse(error.request.response); 52 | if (errorData.message) { 53 | //判断是否具有message属性 54 | ElMessage({ 55 | message: errorData.message, 56 | type: "error", 57 | }); 58 | } 59 | 60 | return Promise.reject(errorData); 61 | } 62 | ); 63 | 64 | //暴露service 65 | export default service; -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/WantedMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Wanted; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface WantedMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table wanted 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table wanted 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Wanted record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table wanted 28 | * 29 | * @mbggenerated 30 | */ 31 | Wanted selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table wanted 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table wanted 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Wanted record); 48 | 49 | Wanted selectWant(@Param("uid") String uid, @Param("gid") Integer gid); 50 | 51 | List selectWantByUserId(@Param("uid") String uid); 52 | 53 | int deleteWantedByGoodsId(@Param("gid") Integer gid); 54 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/dark/content.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body { 8 | background-color: #2f3742; 9 | color: #dfe0e4; 10 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 11 | line-height: 1.4; 12 | margin: 1rem; 13 | } 14 | a { 15 | color: #4099ff; 16 | } 17 | table { 18 | border-collapse: collapse; 19 | } 20 | table th, 21 | table td { 22 | border: 1px solid #6d737b; 23 | padding: 0.4rem; 24 | } 25 | figure { 26 | display: table; 27 | margin: 1rem auto; 28 | } 29 | figure figcaption { 30 | color: #8a8f97; 31 | display: block; 32 | margin-top: 0.25rem; 33 | text-align: center; 34 | } 35 | hr { 36 | border-color: #6d737b; 37 | border-style: solid; 38 | border-width: 1px 0 0 0; 39 | } 40 | code { 41 | background-color: #6d737b; 42 | border-radius: 3px; 43 | padding: 0.1rem 0.2rem; 44 | } 45 | /* Make text in selected cells in tables dark and readable */ 46 | td[data-mce-selected], 47 | th[data-mce-selected] { 48 | color: #333; 49 | } 50 | .mce-content-body:not([dir=rtl]) blockquote { 51 | border-left: 2px solid #6d737b; 52 | margin-left: 1.5rem; 53 | padding-left: 1rem; 54 | } 55 | .mce-content-body[dir=rtl] blockquote { 56 | border-right: 2px solid #6d737b; 57 | margin-right: 1.5rem; 58 | padding-right: 1rem; 59 | } 60 | -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/CommentsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.CommentsMapper; 4 | import com.lvr.kdshop.business.service.CommentsService; 5 | import com.lvr.kdshop.pojo.Comments; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | @Service("commentsService") 12 | public class CommentsServiceImpl implements CommentsService { 13 | 14 | @Resource 15 | private CommentsMapper commentsMapper; 16 | 17 | public int deleteByPrimaryKey(Integer id) { 18 | return commentsMapper.deleteByPrimaryKey(id); 19 | } 20 | 21 | public int insert(Comments record) { 22 | return commentsMapper.insert(record); 23 | } 24 | 25 | public Comments selectByPrimaryKey(Integer id) { 26 | return commentsMapper.selectByPrimaryKey(id); 27 | } 28 | 29 | public List selectAll() { 30 | return commentsMapper.selectAll(); 31 | } 32 | 33 | public int updateByPrimaryKey(Comments record) { 34 | return commentsMapper.updateByPrimaryKey(record); 35 | } 36 | 37 | public List selectByUserKeyWithContent(String uid) { 38 | return commentsMapper.selectByUserKeyWithContent(uid); 39 | } 40 | 41 | public List selectByGoodsId(Integer goodsId) { 42 | return commentsMapper.selectByGoodsId(goodsId); 43 | } 44 | 45 | @Override 46 | public List searchCommentsByContent(String content) { 47 | return commentsMapper.searchCommentsByContent(content); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";function o(n,e){for(var t="",o=0;o'+o(" ",e)+"":o(" ",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0 selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table comments 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Comments record); 48 | 49 | List selectByUserKeyWithContent(@Param("uid") String uid); 50 | 51 | List selectByGoodsId(@Param("gid") Integer goodsId); 52 | 53 | List searchCommentsByContent(@Param("content") String content); 54 | } -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/ResuTree.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | /** 4 | * Describe: Ajax 返回 Dtree 结果封装数据 5 | * Author: 就 眠 仪 式 6 | * CreateTime: 2019/10/23 7 | * */ 8 | 9 | public class ResuTree { 10 | 11 | /** 12 | * 状态信息 13 | * */ 14 | private Status status = new Status(); 15 | 16 | /** 17 | * 返回数据 18 | * */ 19 | private Object data; 20 | 21 | /** 22 | * 所需内部类 23 | * */ 24 | 25 | public class Status{ 26 | 27 | private Integer code = 200; 28 | 29 | private String message = "默认"; 30 | 31 | public Integer getCode() { 32 | return code; 33 | } 34 | 35 | public void setCode(Integer code) { 36 | this.code = code; 37 | } 38 | 39 | public String getMessage() { 40 | return message; 41 | } 42 | 43 | public void setMessage(String message) { 44 | this.message = message; 45 | } 46 | 47 | public Status(Integer code, String message) { 48 | this.code = code; 49 | this.message = message; 50 | } 51 | 52 | public Status() { 53 | } 54 | } 55 | 56 | public Status getStatus() { 57 | return status; 58 | } 59 | 60 | public void setStatus(Status status) { 61 | this.status = status; 62 | } 63 | 64 | public Object getData() { 65 | return data; 66 | } 67 | 68 | public void setData(Object data) { 69 | this.data = data; 70 | } 71 | 72 | public ResuTree() { 73 | } 74 | 75 | public ResuTree(Status status, Object data) { 76 | this.status = status; 77 | this.data = data; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 3000 3 | 4 | # springboot数据源配置 5 | spring: 6 | thymeleaf: 7 | prefix: classpath:/templates/ 8 | suffix: .html 9 | mode: HTML 10 | encoding: UTF-8 11 | cache: false 12 | servlet: 13 | content-type: text/html 14 | messages: 15 | basename: i18n.login 16 | datasource: 17 | driver-class-name: com.mysql.cj.jdbc.Driver 18 | url: jdbc:mysql://127.0.0.1:3306/kd-shop?serverTimezone=GMT%2B8&useSSL=FALSE 19 | username: root #数据库用户名 20 | password: 123!@# #该数据库用户的密码 21 | servlet: 22 | multipart: 23 | enabled: true 24 | file-size-threshold: 0 25 | max-file-size: 20MB 26 | max-request-size: 100MB 27 | devtools: 28 | restart: 29 | enabled: true 30 | # redis: 31 | # host: localhost 32 | # port: 6379 33 | # database: 0 34 | # password: 35 | # timeout: 10s 36 | # lettuce: 37 | # pool: 38 | # min-idle: 0 39 | # max-idle: 8 40 | # max-active: 8 41 | # max-wait: -1ms 42 | 43 | mybatis: #mybatyis的配置 44 | mapper-locations: classpath*:mapper/*.xml #指定mapper的配置文件的路径是mapper文件夹下的所有 xml文件。 45 | type-aliases-package: com.lvr.kdshop.pojo 46 | config-location: classpath:mybatis/mybatis-config.xml 47 | 48 | # 日志 49 | logging: 50 | config: classpath:logback.xml 51 | 52 | # token 53 | token: 54 | header: Authorization 55 | secret: lkjhgfdsa 56 | expireTime: 30 57 | 58 | # 上传文件模式:local为本地上传,需要配置下方的imagesPath;imagesPath为你本地图片文件夹路径 59 | # oss为阿里云上传,需要在阿里云中开通对象存储服务,配置相应的key 60 | uploadMode: local 61 | # 文件上传映射本地路径 62 | # 在项目的源文件夹中建立upload目录,用于文件上传 63 | imagesPath: E:/Code/kd-shop/upload/ 64 | 65 | # 图片映射地址 66 | fileUploadPathRelative: /images/** -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/visualblocks/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";function o(o,e){return function(n){n.setActive(e.get());function t(t){return n.setActive(t.state)}return o.on("VisualBlocks",t),function(){return o.off("VisualBlocks",t)}}}var e=function(t){function n(){return o}var o=t;return{get:n,set:function(t){o=t},clone:function(){return e(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,n){t.fire("VisualBlocks",{state:n})},u=function(t,n,o){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),o.set(!o.get()),i(t,o.get())},c=function(t,n,o){t.addCommand("mceVisualBlocks",function(){u(t,n,o)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},r=function(n,t,o){n.on("PreviewFormats AfterPreviewFormats",function(t){o.get()&&n.dom.toggleClass(n.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),n.on("init",function(){s(n)&&u(n,t,o)}),n.on("remove",function(){n.dom.removeClass(n.getBody(),"mce-visualblocks")})},l=function(t,n){t.ui.registry.addToggleButton("visualblocks",{icon:"paragraph",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)})};!function n(){t.add("visualblocks",function(t,n){var o=e(!1);c(t,n,o),l(t,o),r(t,n,o)})}()}(); -------------------------------------------------------------------------------- /kd-shop-ui/src/router/routes.ts: -------------------------------------------------------------------------------- 1 | import Layout from '~/components/layouts/index.vue'; 2 | 3 | const routes = [ 4 | { 5 | path: '/', 6 | name: 'Layout', 7 | redirect: '/home', 8 | component: Layout, 9 | children: [ 10 | { 11 | path: '/home', 12 | name: 'FrontHome', 13 | component: () => import(`~/pages/front/Home.vue`), 14 | meta: { 15 | title: '首页' 16 | } 17 | }, 18 | { 19 | path: '/notice', 20 | name: 'FrontNotice', 21 | component: () => import(`~/pages/front/Notice.vue`), 22 | meta: { 23 | title: '公告' 24 | } 25 | }, 26 | { 27 | path: '/wanted', 28 | name: 'FrontWanted', 29 | component: () => import(`~/pages/front/Wanted.vue`), 30 | meta: { 31 | title: '公告' 32 | } 33 | }, 34 | { 35 | path: '/publish', 36 | name: 'FrontPublish', 37 | component: () => import(`~/pages/front/Publish.vue`), 38 | meta: { 39 | title: '发布闲置' 40 | } 41 | }, 42 | { 43 | path: '/userInfo', 44 | name: 'FrontUserInfo', 45 | component: () => import(`~/pages/front/UserInfo.vue`), 46 | meta: { 47 | title: '用户信息' 48 | } 49 | } 50 | ] 51 | }, 52 | { 53 | path: '/login', 54 | name: 'Login', 55 | component: () => import(`~/pages/Login/index.vue`), 56 | meta: { 57 | title: '登录' 58 | } 59 | }, 60 | { path: '/:pathMatch(.*)*', name: '404', component: () => import(`~/pages/error/404.vue`) } 61 | 62 | ] 63 | 64 | export default routes -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/CarouselMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Carousel; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface CarouselMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table carousel 12 | * 13 | * @mbggenerated 14 | */ 15 | int deleteByPrimaryKey(Integer id); 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table carousel 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Carousel record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table carousel 28 | * 29 | * @mbggenerated 30 | */ 31 | Carousel selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table carousel 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table carousel 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Carousel record); 48 | 49 | int updateStatusByPrimaryKey(@Param("id") Integer id, @Param("status") Byte status); 50 | 51 | List selectCarouselByStatus(@Param("status") Byte status); 52 | 53 | List searchCarouselByTitleOrDescript(@Param("title") String title, @Param("descript") String descript); 54 | } -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/CatelogMapper.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.mapper; 2 | 3 | import com.lvr.kdshop.pojo.Catelog; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | import java.util.List; 7 | 8 | public interface CatelogMapper { 9 | /** 10 | * This method was generated by MyBatis Generator. 11 | * This method corresponds to the database table catelog 12 | * 13 | * @mbggenerated 14 | */ int deleteByPrimaryKey(Integer id); 15 | 16 | 17 | /** 18 | * This method was generated by MyBatis Generator. 19 | * This method corresponds to the database table catelog 20 | * 21 | * @mbggenerated 22 | */ 23 | int insert(Catelog record); 24 | 25 | /** 26 | * This method was generated by MyBatis Generator. 27 | * This method corresponds to the database table catelog 28 | * 29 | * @mbggenerated 30 | */ 31 | Catelog selectByPrimaryKey(Integer id); 32 | 33 | /** 34 | * This method was generated by MyBatis Generator. 35 | * This method corresponds to the database table catelog 36 | * 37 | * @mbggenerated 38 | */ 39 | List selectAll(); 40 | 41 | /** 42 | * This method was generated by MyBatis Generator. 43 | * This method corresponds to the database table catelog 44 | * 45 | * @mbggenerated 46 | */ 47 | int updateByPrimaryKey(Catelog record); 48 | 49 | 50 | List getAllCatelogByStatus(@Param("status") Byte status); 51 | 52 | 53 | // int getCount(Catelog catelog); 54 | 55 | 56 | // int updateCatelogNum(@Param("id") Integer id, @Param("number") Integer number); 57 | 58 | List searchCatelogByName(@Param("name") String name); 59 | 60 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/card.css: -------------------------------------------------------------------------------- 1 | .project-list-item { 2 | background-color: #fff; 3 | border-radius: 4px; 4 | cursor: pointer; 5 | transition: all .2s; 6 | } 7 | 8 | .project-list-item:hover { 9 | box-shadow: 2px 0 4px rgba(0, 21, 41, .35); 10 | } 11 | 12 | .project-list-item .project-list-item-cover { 13 | width: 100%; 14 | height: 180px; 15 | display: block; 16 | border-top-left-radius: 4px; 17 | border-top-right-radius: 4px; 18 | } 19 | 20 | .project-list-item-body { 21 | padding: 20px; 22 | border: 1px solid #e8e8e8; 23 | } 24 | 25 | .project-list-item .project-list-item-body>h2 { 26 | font-size: 16px; 27 | color: #333; 28 | margin-bottom: 12px; 29 | } 30 | 31 | .project-list-item .project-list-item-text { 32 | height: 40px; 33 | overflow: hidden; 34 | margin-bottom: 12px; 35 | } 36 | 37 | .project-list-item .project-list-item-desc { 38 | position: relative; 39 | } 40 | 41 | .project-list-item .project-list-item-desc .time { 42 | color: #999; 43 | font-size: 12px; 44 | } 45 | 46 | .project-list-item .project-list-item-desc .ew-head-list { 47 | position: absolute; 48 | right: 0; 49 | top: 0; 50 | } 51 | 52 | .ew-head-list .ew-head-list-item:first-child { 53 | margin-left: 0; 54 | } 55 | 56 | .ew-head-list .ew-head-list-item { 57 | width: 22px; 58 | height: 22px; 59 | border-radius: 50%; 60 | border: 1px solid #fff; 61 | margin-left: -10px; 62 | } 63 | 64 | .ew-head-list .ew-head-list-item { 65 | width: 22px; 66 | height: 22px; 67 | border-radius: 50%; 68 | border: 1px solid #fff; 69 | margin-left: -10px; 70 | } 71 | 72 | .pear-card-component { 73 | padding: 20px; 74 | } 75 | 76 | .pear-card-component .layui-laypage .layui-laypage-curr .layui-laypage-em { 77 | border-radius: 0px !important; 78 | } 79 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/step.css: -------------------------------------------------------------------------------- 1 | .lay-step { 2 | font-size: 0; 3 | margin: 0 auto; 4 | max-width: 100%; 5 | width: 60%; 6 | padding-left: 15%; 7 | 8 | } 9 | 10 | .step-item { 11 | display: inline-block; 12 | line-height: 35px; 13 | position: relative; 14 | font-size: 15px; 15 | } 16 | 17 | .step-item-tail { 18 | width: 100%; 19 | padding: 0 10px; 20 | position: absolute; 21 | left: 0; 22 | top: 13px; 23 | } 24 | 25 | .step-item-tail i { 26 | display: inline-block; 27 | width: 100%; 28 | height: 2px; 29 | margin-top: 4px; 30 | vertical-align: top; 31 | background: #5FB878; 32 | position: relative; 33 | } 34 | 35 | .step-item-tail .step-item-tail-done { 36 | background: #5FB878; 37 | height: 3px; 38 | margin-top: 4px; 39 | } 40 | 41 | .step-item-head { 42 | position: relative; 43 | display: inline-block; 44 | height: 35px; 45 | width: 35px; 46 | text-align: center; 47 | vertical-align: top; 48 | color: #5FB878; 49 | border: 2px solid #5FB878; 50 | border-radius: 50%; 51 | background: #ffffff; 52 | } 53 | 54 | .step-item-head.step-item-head-active { 55 | background: #5FB878; 56 | color: #ffffff; 57 | } 58 | 59 | .step-item-main { 60 | display: block; 61 | position: relative; 62 | margin-left: -50%; 63 | margin-right: 50%; 64 | padding-left: 26px; 65 | text-align: center; 66 | } 67 | 68 | .step-item-main-title { 69 | font-weight: bolder; 70 | color: #555555; 71 | } 72 | 73 | .step-item-main-desc { 74 | color: #aaaaaa; 75 | } 76 | 77 | .lay-step + [carousel-item]:before { 78 | display: none; 79 | } 80 | 81 | .lay-step + [carousel-item] > * { 82 | background-color: transparent; 83 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["content/default/content.css"],"names":[],"mappings":";;;;;;AAMA,KACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,SAAS,CAAE,WAAW,CAAE,gBAAgB,CAAE,WAC9H,YAAa,IACb,OAAQ,KAEV,MACE,gBAAiB,SAGnB,SADA,SAEE,OAAQ,IAAI,MAAM,KAClB,QAAS,MAEX,OACE,QAAS,MACT,OAAQ,KAAK,KAEf,kBACE,MAAO,KACP,QAAS,MACT,WAAY,OACZ,WAAY,OAEd,GACE,aAAc,KACd,aAAc,MACd,aAAc,IAAI,EAAE,EAAE,EAExB,KACE,iBAAkB,QAClB,cAAe,IACf,QAAS,MAAO,MAElB,4CACE,YAAa,IAAI,MAAM,KACvB,YAAa,OACb,aAAc,KAEhB,sCACE,aAAc,IAAI,MAAM,KACxB,aAAc,OACd,cAAe","file":"content.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n line-height: 1.4;\n margin: 1rem;\n}\ntable {\n border-collapse: collapse;\n}\ntable th,\ntable td {\n border: 1px solid #ccc;\n padding: 0.4rem;\n}\nfigure {\n display: table;\n margin: 1rem auto;\n}\nfigure figcaption {\n color: #999;\n display: block;\n margin-top: 0.25rem;\n text-align: center;\n}\nhr {\n border-color: #ccc;\n border-style: solid;\n border-width: 1px 0 0 0;\n}\ncode {\n background-color: #e8e8e8;\n border-radius: 3px;\n padding: 0.1rem 0.2rem;\n}\n.mce-content-body:not([dir=rtl]) blockquote {\n border-left: 2px solid #ccc;\n margin-left: 1.5rem;\n padding-left: 1rem;\n}\n.mce-content-body[dir=rtl] blockquote {\n border-right: 2px solid #ccc;\n margin-right: 1.5rem;\n padding-right: 1rem;\n}\n"]} -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/print/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); 15 | 16 | var register = function (editor) { 17 | editor.addCommand('mcePrint', function () { 18 | if (global$1.ie && global$1.ie <= 11) { 19 | editor.getDoc().execCommand('print', false, null); 20 | } else { 21 | editor.getWin().print(); 22 | } 23 | }); 24 | }; 25 | var Commands = { register: register }; 26 | 27 | var register$1 = function (editor) { 28 | editor.ui.registry.addButton('print', { 29 | icon: 'print', 30 | tooltip: 'Print', 31 | onAction: function () { 32 | return editor.execCommand('mcePrint'); 33 | } 34 | }); 35 | editor.ui.registry.addMenuItem('print', { 36 | text: 'Print...', 37 | icon: 'print', 38 | onAction: function () { 39 | return editor.execCommand('mcePrint'); 40 | } 41 | }); 42 | }; 43 | var Buttons = { register: register$1 }; 44 | 45 | function Plugin () { 46 | global.add('print', function (editor) { 47 | Commands.register(editor); 48 | Buttons.register(editor); 49 | editor.addShortcut('Meta+P', '', 'mcePrint'); 50 | }); 51 | } 52 | 53 | Plugin(); 54 | 55 | }()); 56 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/css/pear-module/form.css: -------------------------------------------------------------------------------- 1 | .layui-form-item { 2 | margin-bottom: 0px !important; 3 | margin-top: 5px !important; 4 | } 5 | 6 | .layui-input { 7 | height: 36px !important; 8 | line-height: 36px !important; 9 | border-radius: 3px !important; 10 | } 11 | 12 | .layui-form-label.layui-required:after { 13 | content: "*"; 14 | color: red; 15 | position: absolute; 16 | top: 5px; 17 | left: 15px; 18 | } 19 | 20 | .layui-input[hover]:focus { 21 | box-shadow: 0px 0px 3px 1px #5FB878 !important; 22 | border: #5FB878 1px solid!important; 23 | } 24 | 25 | .layui-input[success] { 26 | box-shadow: 0px 0px 3px 1px #5FB878 !important; 27 | border: #5FB878 1px solid!important; 28 | } 29 | 30 | .layui-input[failure] { 31 | box-shadow: 0px 0px 3px 1px #F56C6C; 32 | border: #F56C6C 1px solid; 33 | } 34 | 35 | input::-webkit-input-placeholder, 36 | textarea::-webkit-input-placeholder { 37 | color: #ccc; 38 | } 39 | 40 | .layui-input:hover, 41 | .layui-textarea:hover, 42 | .layui-input:focus, 43 | .layui-textarea:focus { 44 | border-color: #eee!important; 45 | } 46 | .layui-input:focus, 47 | .layui-textarea:focus { 48 | border-color: #5FB878!important; 49 | box-shadow: 0 0 0 3px rgba(95, 184, 120, 0.2)!important; 50 | } 51 | 52 | .layui-input[success], 53 | .layui-textarea[success] { 54 | border-color: #5FB878!important; 55 | box-shadow: 0 0 0 3px rgba(95, 184, 120, 0.2)!important; 56 | } 57 | 58 | .layui-input[failure], 59 | .layui-textarea[failure] { 60 | border-color: #f56c6c !important; 61 | box-shadow: 0 0 0 3px rgba(245,108,108, 0.2)!important; 62 | } 63 | 64 | .layui-input, 65 | .layui-select, 66 | .layui-textarea { 67 | border-radius: 4px!important; 68 | border-color: #eee!important; 69 | transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out!important; 70 | } -------------------------------------------------------------------------------- /kd-shop-web/src/main/java/com/lvr/kdshop/web/controller/AdminController.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.ui.Model; 5 | import org.springframework.web.bind.annotation.PostMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestParam; 8 | 9 | import javax.servlet.http.HttpServletRequest; 10 | import javax.servlet.http.HttpSession; 11 | 12 | @Controller 13 | @RequestMapping("/admin") 14 | public class AdminController { 15 | 16 | /** 17 | * 登录验证 18 | * @param username 19 | * @param password 20 | * @param model 21 | * @param session 22 | * @return 23 | */ 24 | @PostMapping("/login") 25 | public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session){ 26 | //检查用户名和密码是否正确 27 | if("admin".equals(username) && "123456".equals(password)){ 28 | //当用户名为admin且密码是123456的时候可以进入主页面 29 | session.setAttribute("LoginUser",username); 30 | return "redirect:/main.html"; 31 | }else{ 32 | //用户名或者密码错误的时候给出相应的错误提示,并且返回主页面 33 | model.addAttribute("msg","用户名或者密码输入错误"); 34 | return "index"; 35 | } 36 | } 37 | 38 | /** 39 | * 退出 40 | * @param request 41 | * @return 42 | */ 43 | @RequestMapping("/logout") 44 | public String logout(HttpServletRequest request){ 45 | HttpSession session = request.getSession(); 46 | //清除session,会清除session 47 | // session.invalidate(); 48 | //也可以把用户登录的属性删除 也可以达到注销用户的功能 49 | session.removeAttribute("LoginUser"); 50 | return "redirect:/index.html"; 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["content/writer/content.css"],"names":[],"mappings":";;;;;;AAMA,KACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,SAAS,CAAE,WAAW,CAAE,gBAAgB,CAAE,WAC9H,YAAa,IACb,OAAQ,KAAK,KACb,UAAW,MAEb,MACE,gBAAiB,SAGnB,SADA,SAEE,OAAQ,IAAI,MAAM,KAClB,QAAS,MAEX,OACE,QAAS,MACT,OAAQ,KAAK,KAEf,kBACE,MAAO,KACP,QAAS,MACT,WAAY,OACZ,WAAY,OAEd,GACE,aAAc,KACd,aAAc,MACd,aAAc,IAAI,EAAE,EAAE,EAExB,KACE,iBAAkB,QAClB,cAAe,IACf,QAAS,MAAO,MAElB,4CACE,YAAa,IAAI,MAAM,KACvB,YAAa,OACb,aAAc,KAEhB,sCACE,aAAc,IAAI,MAAM,KACxB,aAAc,OACd,cAAe","file":"content.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n line-height: 1.4;\n margin: 1rem auto;\n max-width: 900px;\n}\ntable {\n border-collapse: collapse;\n}\ntable th,\ntable td {\n border: 1px solid #ccc;\n padding: 0.4rem;\n}\nfigure {\n display: table;\n margin: 1rem auto;\n}\nfigure figcaption {\n color: #999;\n display: block;\n margin-top: 0.25rem;\n text-align: center;\n}\nhr {\n border-color: #ccc;\n border-style: solid;\n border-width: 1px 0 0 0;\n}\ncode {\n background-color: #e8e8e8;\n border-radius: 3px;\n padding: 0.1rem 0.2rem;\n}\n.mce-content-body:not([dir=rtl]) blockquote {\n border-left: 2px solid #ccc;\n margin-left: 1.5rem;\n padding-left: 1rem;\n}\n.mce-content-body[dir=rtl] blockquote {\n border-right: 2px solid #ccc;\n margin-right: 1.5rem;\n padding-right: 1rem;\n}\n"]} -------------------------------------------------------------------------------- /kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/CarouselServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.business.service.impl; 2 | 3 | import com.lvr.kdshop.business.mapper.CarouselMapper; 4 | import com.lvr.kdshop.business.service.CarouselService; 5 | import com.lvr.kdshop.pojo.Carousel; 6 | import org.springframework.stereotype.Service; 7 | 8 | import javax.annotation.Resource; 9 | import java.util.List; 10 | 11 | @Service("carouselService") 12 | public class CarouselServiceImpl implements CarouselService { 13 | 14 | @Resource 15 | private CarouselMapper carouselMapper; 16 | 17 | @Override 18 | public int deleteByPrimaryKey(Integer id) { 19 | return carouselMapper.deleteByPrimaryKey(id); 20 | } 21 | 22 | @Override 23 | public int insert(Carousel record) { 24 | return carouselMapper.insert(record); 25 | } 26 | 27 | @Override 28 | public Carousel selectByPrimaryKey(Integer id) { 29 | return carouselMapper.selectByPrimaryKey(id); 30 | } 31 | 32 | @Override 33 | public List selectAll() { 34 | return carouselMapper.selectAll(); 35 | } 36 | 37 | @Override 38 | public int updateByPrimaryKey(Carousel record) { 39 | return carouselMapper.updateByPrimaryKey(record); 40 | } 41 | 42 | @Override 43 | public int updateStatusByPrimaryKey(Integer id, Byte status) { 44 | return carouselMapper.updateStatusByPrimaryKey(id,status); 45 | } 46 | 47 | @Override 48 | public List selectCarouselByStatus(Byte status) { 49 | return carouselMapper.selectCarouselByStatus(status); 50 | } 51 | 52 | @Override 53 | public List searchCarouselByTitleOrDescript(String title, String descript) { 54 | return carouselMapper.searchCarouselByTitleOrDescript(title,descript); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Signin Template for Bootstrap 9 | 10 | 11 | 12 | 13 | 14 | 15 | 。 16 | 35 | 36 | -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/constant/Constant.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.constant; 2 | 3 | public class Constant { 4 | 5 | /** 6 | * 登录认证相关 7 | */ 8 | public static final String LOGIN_USER_KEY = "kd-shop"; 9 | public static final String TOKEN_PREFIX = "Bearer "; 10 | public static final String TOKEN = "token"; 11 | public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; //验证码 redis key 12 | public static final String LOGIN_TOKEN_KEY = "login_tokens:"; //登录用户 redis key 13 | 14 | 15 | /** 16 | * 操作提示类型的常量 17 | */ 18 | public static final String SUCCESS_DATA = "获取数据成功"; 19 | public static final String SUCCESS_OPERATION = "操作成功"; 20 | public static final String LOGIN_SUCCESS = "登录成功"; 21 | public static final String LOGIN_FAILED = "登录失败,密码错误"; 22 | public static final String PHONE_UNSINED = "手机号未注册"; 23 | public static final String PHONE_SINED = "手机号已注册"; 24 | public static final String VERIFY_CODE_CORRECT = "验证码正确"; 25 | public static final String VERIFY_CODE_NOT_CORRECT = "验证码不正确"; 26 | public static final String REGISTER_SUCCESS = "注册成功"; 27 | public static final String UPLOAD_ERROR = "上传失败"; 28 | public static final String UPLOAD_SUCCESS = "上传成功"; 29 | public static final String UPLOAD_FILE_TYPE_ERROR = "上传文件类型错误"; 30 | public static final String COLLECT = "收藏成功"; 31 | public static final String COLLECT_CANCEL = "取消收藏"; 32 | /** 33 | * 业务相关 34 | */ 35 | public static final int REPORT_TYPE = 1; //反馈类型为投诉 36 | public static final int REPORT_FEEDBACK = 2; //反馈类型为建议 37 | 38 | /** 39 | * 用户状态 40 | */ 41 | 42 | public static final int USER_DEL_STATUS = 0; //用户已删除 43 | public static final int USER_USED_STATUS = 1; //用户可用 44 | public static final int USER_FREEZE_STATUS = 2; //用户已冻结 45 | 46 | 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/save/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}(); -------------------------------------------------------------------------------- /kd-shop-common/src/main/java/com/lvr/kdshop/util/ResultTable.java: -------------------------------------------------------------------------------- 1 | package com.lvr.kdshop.util; 2 | 3 | /** 4 | * 分页结果的封装 5 | * 6 | * @author zhaonz 7 | * @Date 20210815 8 | */ 9 | public class ResultTable { 10 | 11 | /** 12 | * 状态码 13 | */ 14 | private Integer code; 15 | 16 | /** 17 | * 提示消息 18 | */ 19 | private String msg; 20 | 21 | /** 22 | * 消息总量 23 | */ 24 | private Long count; 25 | 26 | /** 27 | * 数据对象 28 | */ 29 | private Object data; 30 | 31 | public Integer getCode() { 32 | return code; 33 | } 34 | 35 | public void setCode(Integer code) { 36 | this.code = code; 37 | } 38 | 39 | public String getMsg() { 40 | return msg; 41 | } 42 | 43 | public void setMsg(String msg) { 44 | this.msg = msg; 45 | } 46 | 47 | public Long getCount() { 48 | return count; 49 | } 50 | 51 | public void setCount(Long count) { 52 | this.count = count; 53 | } 54 | 55 | public Object getData() { 56 | return data; 57 | } 58 | 59 | public void setData(Object data) { 60 | this.data = data; 61 | } 62 | 63 | /** 64 | * 构 建 65 | * 66 | * @param count 67 | * @param data 68 | * @return 69 | */ 70 | public static ResultTable pageTable(long count, Object data) { 71 | ResultTable resultTable = new ResultTable(); 72 | resultTable.setData(data); 73 | resultTable.setCode(0); 74 | resultTable.setCount(count); 75 | return resultTable; 76 | } 77 | 78 | /** 79 | * @param data 80 | * @return 81 | */ 82 | public static ResultTable dataTable(Object data) { 83 | ResultTable resultTable = new ResultTable(); 84 | resultTable.setData(data); 85 | resultTable.setCode(0); 86 | return resultTable; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /kd-shop-web/src/main/resources/static/pear.config.yml: -------------------------------------------------------------------------------- 1 | ## 网站配置 2 | logo: 3 | ## 网站名称 4 | title: "springboot-v2" 5 | ## 网站图标 6 | image: "../static/admin/images/logo.png" 7 | ## 菜单配置 8 | menu: 9 | ## 菜单数据来源 10 | data: /admin/getUserMenu 11 | ## 是否同时只打开一个菜单目录 12 | accordion: true 13 | ## 是否开启多系统菜单模式 14 | control: false 15 | ## 默认选中的菜单项 16 | select: "10" 17 | ## 是否开启异步菜单,false 时 data 属性设置为菜单数据,false 时为 json 文件或后端接口 18 | async: true 19 | ## 视图内容配置 20 | tab: 21 | ## 是否开启多选项卡 22 | muiltTab: true 23 | ## 切换选项卡时,是否保持页面状态 24 | keepState: true 25 | ## 最大可打开的选项卡数量 26 | tabMax: 30 27 | ## Tab 记忆 28 | session: true 29 | ## 默认选项卡数据 30 | index: 31 | id: "10" ## 标识 ID , 建议与菜单项中的 ID 一致 32 | href: "/ServiceController/view" ## 页面地址 33 | title: "首页" ## 标题 34 | ## 主题配置 35 | theme: 36 | ## 默认主题色,对应 colors 配置中的 ID 标识 37 | defaultColor: "2" 38 | ## 默认的菜单主题 dark-theme 黑 / light-theme 白 39 | defaultMenu: "dark-theme" 40 | ## 是否允许用户切换主题,false 时关闭自定义主题面板 41 | allowCustom: true 42 | ## 供选择的主题色配置列表 43 | colors: 44 | - id: "1" 45 | color: "#2d8cf0" 46 | - id: "2" 47 | color: "#36b368" 48 | - id: "3" 49 | color: "#f6ad55" 50 | - id: "4" 51 | color: "#f56c6c" 52 | - id: "5" 53 | color: "darkgray" 54 | ## 主题面板的链接列表配置 55 | links: 56 | - icon: "layui-icon layui-icon-website" 57 | title: "官方网站" 58 | href: "http://www.pearadmin.com" 59 | - icon: "layui-icon layui-icon-read" 60 | title: "开发文档" 61 | href: "http://www.pearadmin.com/doc/" 62 | - icon: "layui-icon layui-icon-fonts-code" 63 | title: "开源地址" 64 | href: "https://gitee.com/pear-admin/Pear-Admin-Layui" 65 | - icon: "layui-icon layui-icon-survey" 66 | title: "问答社区" 67 | href: "http://forum.pearadmin.com/" 68 | ## 其他配置 69 | other: 70 | ## 主页动画时长 71 | keepLoad: "1200" 72 | ## 布局顶部主题 73 | autoHead: false 74 | header: 75 | ## 站内消息,数据来源,通过 false 设置关闭 76 | message: false ##"system/notice/notice" --------------------------------------------------------------------------------