├── .DS_Store ├── .gitignore ├── README.md ├── finallyproject.sql ├── mall.docx ├── mall ├── .DS_Store ├── .gitignore ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── .DS_Store │ ├── favicon.ico │ ├── index.html │ └── tximg │ │ ├── .DS_Store │ │ └── inittximg.jpg ├── src │ ├── .DS_Store │ ├── App.vue │ ├── assets │ │ ├── .DS_Store │ │ ├── css │ │ │ ├── admin_global.css │ │ │ ├── base.css │ │ │ ├── normalize.css │ │ │ └── user_detaillELUI.css │ │ ├── font │ │ │ ├── Ubuntu │ │ │ │ ├── UFL.txt │ │ │ │ ├── Ubuntu-Bold.ttf │ │ │ │ ├── Ubuntu-BoldItalic.ttf │ │ │ │ ├── Ubuntu-Italic.ttf │ │ │ │ ├── Ubuntu-Light.ttf │ │ │ │ ├── Ubuntu-LightItalic.ttf │ │ │ │ ├── Ubuntu-Medium.ttf │ │ │ │ ├── Ubuntu-MediumItalic.ttf │ │ │ │ └── Ubuntu-Regular.ttf │ │ │ └── Ubuntu_Mono │ │ │ │ ├── UFL.txt │ │ │ │ ├── UbuntuMono-Bold.ttf │ │ │ │ ├── UbuntuMono-BoldItalic.ttf │ │ │ │ ├── UbuntuMono-Italic.ttf │ │ │ │ └── UbuntuMono-Regular.ttf │ │ ├── img │ │ │ ├── .DS_Store │ │ │ ├── Thumbs.db │ │ │ ├── goat.gif │ │ │ └── mountain range.jpg │ │ ├── languages │ │ │ ├── en.js │ │ │ └── zh.js │ │ └── mixins │ │ │ └── checkrules.js │ ├── common │ │ ├── const.js │ │ ├── eventBus.js │ │ ├── loginrule.js │ │ ├── mixin.js │ │ └── utils.js │ ├── components │ │ ├── .DS_Store │ │ ├── common │ │ │ ├── mouserun.vue │ │ │ ├── mousesee.vue │ │ │ ├── viewmore.vue │ │ │ └── zhezhao.vue │ │ └── content │ │ │ ├── Card │ │ │ └── Card.vue │ │ │ ├── goods │ │ │ ├── goods.vue │ │ │ └── goodsitem.vue │ │ │ ├── pubuliuCard │ │ │ └── pubuliuCard.vue │ │ │ └── ranklist │ │ │ ├── ranklist.vue │ │ │ └── ranklisthead.vue │ ├── i18n │ │ └── index.js │ ├── main.js │ ├── network │ │ ├── admin.js │ │ ├── admin2.js │ │ ├── goods.js │ │ ├── img.js │ │ ├── login.js │ │ └── request.js │ ├── router │ │ └── index.js │ ├── store │ │ ├── actions.js │ │ ├── getters.js │ │ ├── index.js │ │ ├── mutation-types.js │ │ └── mutations.js │ └── views │ │ ├── .DS_Store │ │ ├── Admin │ │ ├── Admin.vue │ │ ├── AdminLog │ │ │ └── AdminLog.vue │ │ ├── HelloAdmin │ │ │ └── HelloAdmin.vue │ │ ├── ManageGoods │ │ │ └── ManageGoods.vue │ │ ├── ManageOrder │ │ │ └── ManageOrder.vue │ │ └── ManageUser │ │ │ ├── ShowAll.vue │ │ │ └── userinfo.vue │ │ ├── Error │ │ └── error.vue │ │ └── Home │ │ ├── .DS_Store │ │ ├── Deposit │ │ └── Deposit.vue │ │ ├── Detail │ │ ├── childcmp │ │ │ └── sizetable.vue │ │ └── detail.vue │ │ ├── ForgetPassword │ │ └── ForgetPassword.vue │ │ ├── Home │ │ ├── ChildCmp │ │ │ └── AsideBody.vue │ │ └── Home.vue │ │ ├── LoginAndRgstr │ │ └── Login.vue │ │ ├── ShopDetail │ │ └── ShopDetail.vue │ │ ├── ShowGoods │ │ ├── ShowGoods.vue │ │ └── all.vue │ │ ├── UpdateUserinfo │ │ └── updateuserinfo.vue │ │ ├── UserWelcome │ │ └── UserWelcome.vue │ │ ├── Userinfo │ │ └── Userinfo.vue │ │ └── firstinit │ │ └── firstinit.vue └── vue.config.js ├── sever ├── .DS_Store ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── encodings.xml │ ├── jarRepositories.xml │ ├── misc.xml │ └── vcs.xml ├── img │ ├── 1467068952348721153tximg.jpg │ └── nulltximg.jpg ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── .DS_Store │ └── main │ ├── .DS_Store │ ├── java │ ├── .DS_Store │ └── com │ │ ├── .DS_Store │ │ └── ryw │ │ ├── .DS_Store │ │ ├── FinalprojectApplication.java │ │ ├── config │ │ ├── MyBatisPlusConfig.java │ │ └── WebConfig.java │ │ ├── controller │ │ ├── AdminController.java │ │ ├── GoodsController.java │ │ ├── LoginController.java │ │ ├── OrderController.java │ │ ├── RegisterController.java │ │ ├── UserConteroller.java │ │ └── UserInfoController.java │ │ ├── entity │ │ ├── Adminactive.java │ │ ├── Goods.java │ │ ├── Goodsimg.java │ │ ├── Sizerestcount.java │ │ ├── User.java │ │ ├── Userinfo.java │ │ └── Userorder.java │ │ ├── hander │ │ └── MyMateObjectHander.java │ │ ├── mapper │ │ ├── AdminactiveMapper.java │ │ ├── GoodsMapper.java │ │ ├── GoodsimgMapper.java │ │ ├── SizerestcountMapper.java │ │ ├── UserMapper.java │ │ ├── UserinfoMapper.java │ │ └── UserorderMapper.java │ │ └── util │ │ ├── MD5Utils.java │ │ └── makeDirectory.java │ └── resources │ ├── application.properties │ └── mapping │ ├── GoodsMapper.xml │ └── UserMapper.xml ├── 图片 ├── .DS_Store ├── ER图.drawio ├── yg系统框架图.drawio ├── 修改密码时序图.drawio ├── 兔子商城流程图.drawio ├── 刷新缓存路径时序图.drawio ├── 搜索商品时序图.drawio ├── 浏览首页商品时序图.drawio ├── 用例图 │ ├── .DS_Store │ ├── 日志.drawio │ ├── 用户下单购物用例图.drawio │ ├── 用户修改信息用例图.drawio │ ├── 用户的用例图.drawio │ ├── 登陆注册修改密码.drawio │ ├── 管理员.drawio │ ├── 管理员操作货物订单.drawio │ └── 管理员管理用户用例图.drawio ├── 用户修改个人信息时序图.drawio ├── 用户充值时序图.drawio ├── 用户购买时序图.drawio ├── 管理员查看日志时序图.drawio ├── 管理员管理用户信息时序图.drawio ├── 管理员管理用户账号时序图.drawio ├── 管理员管理订单时序图.drawio ├── 管理员管理货物时序图.drawio ├── 类图 │ ├── .DS_Store │ ├── admin.png │ ├── goods.png │ ├── login.png │ ├── order.png │ ├── register.png │ ├── user.png │ └── userinfo.png ├── 系统类图.drawio └── 邮箱配置图.png ├── 客户端图片 ├── .DS_Store ├── 个人账户.png ├── 修改个人信息.png ├── 充值.png ├── 全部商品.png ├── 分类商品.png ├── 店铺评分.png ├── 店铺详情.png ├── 忘记密码.png ├── 排行榜.png ├── 搜索.png ├── 注册.png ├── 登录.png ├── 详情页1.png ├── 详情页2.png ├── 详情页3.png ├── 首页1.png ├── 首页2.png └── 首页3.png └── 管理员图片 ├── .DS_Store ├── 添加商品.png ├── 添加账户.png ├── 管理员日志.png ├── 管理用户信息.png ├── 管理账号.png ├── 订单管理.png └── 货物管理.png /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | **/node_modules 5 | # roadhog-api-doc ignore 6 | /src/utils/request-temp.js 7 | _roadhog-api-doc 8 | 9 | # production 10 | /dist 11 | /.vscode 12 | 13 | # misc 14 | .DS_Store 15 | npm-debug.log* 16 | yarn-error.log 17 | 18 | /coverage 19 | .idea 20 | yarn.lock 21 | package-lock.json 22 | *bak 23 | .vscode 24 | 25 | # visual studio code 26 | .history 27 | *.log 28 | functions/* 29 | .temp/** 30 | 31 | # umi 32 | .umi 33 | .umi-production 34 | 35 | # screenshot 36 | screenshot 37 | .firebase 38 | .eslintcache 39 | 40 | build 41 | 42 | wgg 43 | dist/ 44 | deploy_versions/ 45 | .temp/ 46 | .rn_temp/ 47 | node_modules/ 48 | .DS_Store 49 | .husky/_ 50 | .swc/ 51 | project.private.config.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **RabbitMall项目github地址**:[github 地址](https://github.com/SSDWGG/rabbitMall.git) 2 | **RabbitMall项目线上地址**:[线上地址](http://mall.ssdwgg.cn/) 3 | 4 | # RabbitMall 5 | 6 | ### 前言 7 | 8 | 前台使用 vue技术 为基础开发 (axios,vue-router,vuex) 9 | 服务端 使用 springboot 来启服务 10 | 11 | 12 | 项目启动方式:(node 版本14.x) 13 | 在 mysql 数据库中建立数据库,导入sql 文件 14 | sever 中配置一下链接数据库 15 | mall/network/request中链接接口 16 | 服务端启动 :从FinalprojectApplication 文件夹 启动 17 | 前端启动 : 使用 npm install 安装依赖 使用 npm start 启动 18 | 19 | 20 | 系统默认用户账号已经给出 (或者可以自行注册) 21 | 系统管理员账号默认为(rywtest qwe12345) 22 | 23 | 24 | 想要使用邮箱功能需要如图进行后端配置(具体参数需要去qq邮箱申请,步骤请百度,或者联系我) 25 | ![邮箱配置图](图片/邮箱配置图.png) 26 | 27 | 项目启动有任何问题也可以联系我~ 28 |
29 | 30 | ### 1.项目截图 31 | 客户端截图 32 | ![登录](客户端图片/登录.png) 33 | ![注册](客户端图片/注册.png) 34 | ![充值](客户端图片/充值.png) 35 | ![](客户端图片/店铺评分.png) 36 | ![](客户端图片/店铺详情.png) 37 | ![](客户端图片/分类商品.png) 38 | ![](客户端图片/个人账户.png) 39 | ![](客户端图片/排行榜.png) 40 | ![](客户端图片/全部商品.png) 41 | ![](客户端图片/首页1.png) 42 | ![](客户端图片/首页2.png) 43 | ![](客户端图片/首页3.png) 44 | ![](客户端图片/详情页1.png) 45 | ![](客户端图片/详情页2.png) 46 | ![](客户端图片/详情页3.png) 47 | ![](客户端图片/修改个人信息.png) 48 | 49 | 管理员端截图(图片不一一展示,基本都是同类型的表) 50 | ![](管理员图片/管理用户信息.png) 51 | 52 | 项目的类图,用例图,ER图,各部分时序图等图较多,全都放在图片文件夹中 53 | 54 |
55 | 56 | ### 2.项目页面和功能 57 | 58 | 页面: 59 |
60 | 前台: 61 | - [x] 首页页面 62 | - [x] 分类商品页面 63 | - [x] 店铺介绍页面 64 | - [x] 详细商品信息页面 65 | - [x] 购物金充值页面 66 | - [x] 用户个人页面等页面 67 |
68 | 后台: 69 | - [x] 管理账号页面 70 | - [x] 管理用户信息页面 71 | - [x] 管理订单页面 72 | - [x] 管理货物页面 73 | - [x] 查看管理员日志页面 74 | 75 | 功能: 76 |
77 | 前台功能 78 | - [x] 用户浏览商品功能 79 | - [x] 用户下单商品功能 80 | - [x] 充值功能 81 | - [x] 修改用户信息功能。 82 | - [x] 搜索查询功能 83 |
84 | 管理端功能: 85 | - [x] 增删改查用户账户和用户信息功能 86 | - [x] 增删改查订单货物功能 87 | - [x] 条件搜索展示管理员行为操作日志功能。 88 | 89 |
90 | 91 | 92 | ### 2.打包部署 93 | 项目打包使用 npm build 命令 94 | 项目部署的话 将dist文件夹直接部署到路径的根目录下(这样会减少很多新手不必要的麻烦) 95 | 96 | 将dist文件包放在/home/www文件夹下 97 | 在nginx中配置如下 98 | ```javascript 99 | server { 100 | listen * default_server; 101 | server_name _; 102 | root /home/www/dist; 103 | # Load configuration files for the default server block. 104 | include /etc/nginx/default.d/*.conf; 105 | location / { 106 | #资源访问失败后定向到index.html 107 | try_files $uri $uri/ /index.html; 108 | } 109 | } 110 | ``` 111 | 112 | **项目预览地址**:[预览地址](http://mall.ssdwgg.cn) 113 |
-------------------------------------------------------------------------------- /mall.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall.docx -------------------------------------------------------------------------------- /mall/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/.DS_Store -------------------------------------------------------------------------------- /mall/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | deploy_versions/ 3 | .temp/ 4 | .rn_temp/ 5 | node_modules/ 6 | .DS_Store 7 | .husky/_ 8 | .swc/ 9 | project.private.config.json -------------------------------------------------------------------------------- /mall/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /mall/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my_project", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build" 8 | }, 9 | "dependencies": { 10 | "animate.css": "^4.1.1", 11 | "axios": "^0.23.0", 12 | "core-js": "^3.6.5", 13 | "element-ui": "^2.15.6", 14 | "jquery": "^3.6.0", 15 | "less": "^4.1.2", 16 | "lrz": "^4.9.41", 17 | "qs": "^6.10.1", 18 | "vue": "^2.6.11", 19 | "vue-i18n": "^8.26.8", 20 | "vue-router": "^3.5.2", 21 | "vue-waterfall2": "^1.10.1", 22 | "vuedraggable": "^2.24.3", 23 | "vuex": "^3.6.2" 24 | }, 25 | "devDependencies": { 26 | "@vue/cli-plugin-babel": "~4.5.0", 27 | "@vue/cli-service": "~4.5.0", 28 | "less-loader": "^7.3.0", 29 | "vue-lazyload": "^1.3.3", 30 | "vue-template-compiler": "^2.6.11" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /mall/public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/public/.DS_Store -------------------------------------------------------------------------------- /mall/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/public/favicon.ico -------------------------------------------------------------------------------- /mall/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /mall/public/tximg/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/public/tximg/.DS_Store -------------------------------------------------------------------------------- /mall/public/tximg/inittximg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/public/tximg/inittximg.jpg -------------------------------------------------------------------------------- /mall/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/.DS_Store -------------------------------------------------------------------------------- /mall/src/App.vue: -------------------------------------------------------------------------------- 1 | 17 | 33 | 34 | 35 | 170 | -------------------------------------------------------------------------------- /mall/src/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/.DS_Store -------------------------------------------------------------------------------- /mall/src/assets/css/admin_global.css: -------------------------------------------------------------------------------- 1 | /* 全局样式表 如果在组件内用用此样式表,body等属性会失灵 组件内样式表不能有body等属性*/ 2 | html,body,#app{ 3 | height: 100%; 4 | margin: 0; 5 | padding: 0; 6 | } 7 | /*!* 面包屑样式 *!*/ 8 | .el-breadcrumb{ 9 | margin-bottom: 15px; 10 | font-size: 12px; 11 | } 12 | /*!* 卡片区域 *!*/ 13 | .el-card{ 14 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) !important; 15 | } 16 | /*!* 表格样式 *!*/ 17 | .el-table{ 18 | margin-top: 15px; 19 | font-size: 12px; 20 | } 21 | .el-pagination{ 22 | margin-top: 15px; 23 | } 24 | .el-steps{ 25 | margin: 15px 0; 26 | } 27 | .el-step_title{ 28 | font-size: 13px; 29 | } -------------------------------------------------------------------------------- /mall/src/assets/css/base.css: -------------------------------------------------------------------------------- 1 | /*清除基本样式*/ 2 | @import "normalize.css"; 3 | 4 | /*:root -> 获取根元素html */ 5 | :root { 6 | --color-text: #666; 7 | --color-high-text: #ff5777; 8 | --color-tint: #ff8198; 9 | --color-background: #fff; 10 | --font-size: 14px; 11 | --line-height: 1.5; 12 | } 13 | 14 | *, 15 | *::before, 16 | *::after { 17 | margin: 0; 18 | padding: 0; 19 | box-sizing: border-box; 20 | } 21 | 22 | body { 23 | font-family: "UbuntuMono-Bold"; 24 | user-select: none; /* 禁止用户鼠标在页面上选中文字/图片等 */ 25 | -webkit-tap-highlight-color: transparent; /* webkit是苹果浏览器引擎,tap点击,highlight背景高亮,color颜色,颜色用数值调节 */ 26 | background: var(--color-background); 27 | color: var(--color-text); 28 | /* rem vw/vh */ 29 | width: 100vw; 30 | overflow-x: hidden; 31 | } 32 | 33 | a { 34 | color: var(--color-text); 35 | text-decoration: none; 36 | } 37 | /*设置鼠标样式*/ 38 | a:hover,button:hover,input:hover{ 39 | cursor: pointer; 40 | } 41 | 42 | 43 | .clear-fix::after { 44 | clear: both; 45 | content: ''; 46 | display: block; 47 | width: 0; 48 | height: 0; 49 | visibility: hidden; 50 | } 51 | 52 | .clear-fix { 53 | zoom: 1; 54 | } 55 | 56 | .left { 57 | float: left; 58 | } 59 | 60 | .right { 61 | float: right; 62 | } 63 | 64 | -------------------------------------------------------------------------------- /mall/src/assets/css/user_detaillELUI.css: -------------------------------------------------------------------------------- 1 | .el-carousel__button{ 2 | width: 20px; 3 | 4 | } 5 | .el-carousel__indicators--outside button{ 6 | background-color: #ff8198 ; 7 | opacity: .3 ; 8 | } 9 | .el-carousel__arrow{ 10 | width: 40px; 11 | height: 40px; 12 | } 13 | 14 | .el-carousel__container{ 15 | height: 420px!important; 16 | } 17 | 18 | 19 | .el-rate{ 20 | border: 0px; 21 | outline: none; 22 | } 23 | 24 | .el-page-header__title{ 25 | font-size: 2.5rem; 26 | } 27 | .el-page-header__content{ 28 | font-size: 2.5rem; 29 | } 30 | .el-page-header__left .el-icon-back{ 31 | font-size: 1.5rem; 32 | margin-right:15px ; 33 | } 34 | .el-page-header__left::after{ 35 | width: .1rem; 36 | height: 2rem; 37 | } -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/UFL.txt: -------------------------------------------------------------------------------- 1 | ------------------------------- 2 | UBUNTU FONT LICENCE Version 1.0 3 | ------------------------------- 4 | 5 | PREAMBLE 6 | This licence allows the licensed fonts to be used, studied, modified and 7 | redistributed freely. The fonts, including any derivative works, can be 8 | bundled, embedded, and redistributed provided the terms of this licence 9 | are met. The fonts and derivatives, however, cannot be released under 10 | any other licence. The requirement for fonts to remain under this 11 | licence does not require any document created using the fonts or their 12 | derivatives to be published under this licence, as long as the primary 13 | purpose of the document is not to be a vehicle for the distribution of 14 | the fonts. 15 | 16 | DEFINITIONS 17 | "Font Software" refers to the set of files released by the Copyright 18 | Holder(s) under this licence and clearly marked as such. This may 19 | include source files, build scripts and documentation. 20 | 21 | "Original Version" refers to the collection of Font Software components 22 | as received under this licence. 23 | 24 | "Modified Version" refers to any derivative made by adding to, deleting, 25 | or substituting -- in part or in whole -- any of the components of the 26 | Original Version, by changing formats or by porting the Font Software to 27 | a new environment. 28 | 29 | "Copyright Holder(s)" refers to all individuals and companies who have a 30 | copyright ownership of the Font Software. 31 | 32 | "Substantially Changed" refers to Modified Versions which can be easily 33 | identified as dissimilar to the Font Software by users of the Font 34 | Software comparing the Original Version with the Modified Version. 35 | 36 | To "Propagate" a work means to do anything with it that, without 37 | permission, would make you directly or secondarily liable for 38 | infringement under applicable copyright law, except executing it on a 39 | computer or modifying a private copy. Propagation includes copying, 40 | distribution (with or without modification and with or without charging 41 | a redistribution fee), making available to the public, and in some 42 | countries other activities as well. 43 | 44 | PERMISSION & CONDITIONS 45 | This licence does not grant any rights under trademark law and all such 46 | rights are reserved. 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a 49 | copy of the Font Software, to propagate the Font Software, subject to 50 | the below conditions: 51 | 52 | 1) Each copy of the Font Software must contain the above copyright 53 | notice and this licence. These can be included either as stand-alone 54 | text files, human-readable headers or in the appropriate machine- 55 | readable metadata fields within text or binary files as long as those 56 | fields can be easily viewed by the user. 57 | 58 | 2) The font name complies with the following: 59 | (a) The Original Version must retain its name, unmodified. 60 | (b) Modified Versions which are Substantially Changed must be renamed to 61 | avoid use of the name of the Original Version or similar names entirely. 62 | (c) Modified Versions which are not Substantially Changed must be 63 | renamed to both (i) retain the name of the Original Version and (ii) add 64 | additional naming elements to distinguish the Modified Version from the 65 | Original Version. The name of such Modified Versions must be the name of 66 | the Original Version, with "derivative X" where X represents the name of 67 | the new work, appended to that name. 68 | 69 | 3) The name(s) of the Copyright Holder(s) and any contributor to the 70 | Font Software shall not be used to promote, endorse or advertise any 71 | Modified Version, except (i) as required by this licence, (ii) to 72 | acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with 73 | their explicit written permission. 74 | 75 | 4) The Font Software, modified or unmodified, in part or in whole, must 76 | be distributed entirely under this licence, and must not be distributed 77 | under any other licence. The requirement for fonts to remain under this 78 | licence does not affect any document created using the Font Software, 79 | except any version of the Font Software extracted from a document 80 | created using the Font Software may only be distributed under this 81 | licence. 82 | 83 | TERMINATION 84 | This licence becomes null and void if any of the above conditions are 85 | not met. 86 | 87 | DISCLAIMER 88 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 89 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 90 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF 91 | COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 92 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 93 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 94 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 95 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER 96 | DEALINGS IN THE FONT SOFTWARE. 97 | -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-Bold.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-BoldItalic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-Italic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-Light.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-LightItalic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-Medium.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-MediumItalic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu/Ubuntu-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu/Ubuntu-Regular.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu_Mono/UFL.txt: -------------------------------------------------------------------------------- 1 | ------------------------------- 2 | UBUNTU FONT LICENCE Version 1.0 3 | ------------------------------- 4 | 5 | PREAMBLE 6 | This licence allows the licensed fonts to be used, studied, modified and 7 | redistributed freely. The fonts, including any derivative works, can be 8 | bundled, embedded, and redistributed provided the terms of this licence 9 | are met. The fonts and derivatives, however, cannot be released under 10 | any other licence. The requirement for fonts to remain under this 11 | licence does not require any document created using the fonts or their 12 | derivatives to be published under this licence, as long as the primary 13 | purpose of the document is not to be a vehicle for the distribution of 14 | the fonts. 15 | 16 | DEFINITIONS 17 | "Font Software" refers to the set of files released by the Copyright 18 | Holder(s) under this licence and clearly marked as such. This may 19 | include source files, build scripts and documentation. 20 | 21 | "Original Version" refers to the collection of Font Software components 22 | as received under this licence. 23 | 24 | "Modified Version" refers to any derivative made by adding to, deleting, 25 | or substituting -- in part or in whole -- any of the components of the 26 | Original Version, by changing formats or by porting the Font Software to 27 | a new environment. 28 | 29 | "Copyright Holder(s)" refers to all individuals and companies who have a 30 | copyright ownership of the Font Software. 31 | 32 | "Substantially Changed" refers to Modified Versions which can be easily 33 | identified as dissimilar to the Font Software by users of the Font 34 | Software comparing the Original Version with the Modified Version. 35 | 36 | To "Propagate" a work means to do anything with it that, without 37 | permission, would make you directly or secondarily liable for 38 | infringement under applicable copyright law, except executing it on a 39 | computer or modifying a private copy. Propagation includes copying, 40 | distribution (with or without modification and with or without charging 41 | a redistribution fee), making available to the public, and in some 42 | countries other activities as well. 43 | 44 | PERMISSION & CONDITIONS 45 | This licence does not grant any rights under trademark law and all such 46 | rights are reserved. 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a 49 | copy of the Font Software, to propagate the Font Software, subject to 50 | the below conditions: 51 | 52 | 1) Each copy of the Font Software must contain the above copyright 53 | notice and this licence. These can be included either as stand-alone 54 | text files, human-readable headers or in the appropriate machine- 55 | readable metadata fields within text or binary files as long as those 56 | fields can be easily viewed by the user. 57 | 58 | 2) The font name complies with the following: 59 | (a) The Original Version must retain its name, unmodified. 60 | (b) Modified Versions which are Substantially Changed must be renamed to 61 | avoid use of the name of the Original Version or similar names entirely. 62 | (c) Modified Versions which are not Substantially Changed must be 63 | renamed to both (i) retain the name of the Original Version and (ii) add 64 | additional naming elements to distinguish the Modified Version from the 65 | Original Version. The name of such Modified Versions must be the name of 66 | the Original Version, with "derivative X" where X represents the name of 67 | the new work, appended to that name. 68 | 69 | 3) The name(s) of the Copyright Holder(s) and any contributor to the 70 | Font Software shall not be used to promote, endorse or advertise any 71 | Modified Version, except (i) as required by this licence, (ii) to 72 | acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with 73 | their explicit written permission. 74 | 75 | 4) The Font Software, modified or unmodified, in part or in whole, must 76 | be distributed entirely under this licence, and must not be distributed 77 | under any other licence. The requirement for fonts to remain under this 78 | licence does not affect any document created using the Font Software, 79 | except any version of the Font Software extracted from a document 80 | created using the Font Software may only be distributed under this 81 | licence. 82 | 83 | TERMINATION 84 | This licence becomes null and void if any of the above conditions are 85 | not met. 86 | 87 | DISCLAIMER 88 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 89 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 90 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF 91 | COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 92 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 93 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 94 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 95 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER 96 | DEALINGS IN THE FONT SOFTWARE. 97 | -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Bold.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu_Mono/UbuntuMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu_Mono/UbuntuMono-BoldItalic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Italic.ttf -------------------------------------------------------------------------------- /mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/font/Ubuntu_Mono/UbuntuMono-Regular.ttf -------------------------------------------------------------------------------- /mall/src/assets/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/img/.DS_Store -------------------------------------------------------------------------------- /mall/src/assets/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/img/Thumbs.db -------------------------------------------------------------------------------- /mall/src/assets/img/goat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/img/goat.gif -------------------------------------------------------------------------------- /mall/src/assets/img/mountain range.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/assets/img/mountain range.jpg -------------------------------------------------------------------------------- /mall/src/assets/languages/en.js: -------------------------------------------------------------------------------- 1 | var en = { 2 | "common": { 3 | "viewmore": "VIEWMORE", 4 | "shopdetail": "shop", 5 | "account": "account", 6 | "allgoods": "goods", 7 | "newarrivals": "New arrivals", 8 | "hot": "Hot", 9 | "sale": "Sale", 10 | "oldprice": "oldprice", 11 | "nowprice": "nowprice", 12 | "sellcount": "sellcount", 13 | "coupan": "coupan", 14 | "buy": "buy", 15 | "size": "Size", 16 | "rest": "Rest", 17 | "coupantext": "no coupantext now", 18 | 19 | } 20 | } 21 | 22 | export default en -------------------------------------------------------------------------------- /mall/src/assets/languages/zh.js: -------------------------------------------------------------------------------- 1 | var zh = { 2 | "common": { 3 | "viewmore": "排行榜", 4 | "shopdetail": "门店详情", 5 | "account": "我的账户", 6 | "allgoods": "所有商品", 7 | "newarrivals": "近期上新", 8 | "hot": "热卖商品", 9 | "sale": "折扣商品", 10 | "oldprice": "原价", 11 | "nowprice": "现价", 12 | "sellcount": "销量", 13 | "coupan": "优惠券", 14 | "buy": "购买", 15 | "size": "尺码", 16 | "rest": "剩余", 17 | "coupantext": "店主暂时没有上架店铺优惠券哦~", 18 | } 19 | } 20 | 21 | export default zh -------------------------------------------------------------------------------- /mall/src/assets/mixins/checkrules.js: -------------------------------------------------------------------------------- 1 | import { 2 | email, 3 | identifyingcode, 4 | upadasendemail 5 | } from "@/network/login"; 6 | 7 | export const chexkrules = { 8 | //混入中同样的钩子函数会被优先于原钩子执行 9 | data() { 10 | return {} 11 | }, //混入的数据和元数据相同的情况下会被元数据覆盖,无需担心同名数据干扰 12 | methods: { 13 | checkusername(username) { 14 | //用户只能绑定一个邮箱,创建一个账号,(不为空,验证,) 15 | if (/^[A-Za-z0-9]{1,10}$/.test(username)) { //1 账号长度1-10 //仅支持字母数字下划线 16 | //console.log("账户规则验证成功"); 17 | return 1 //验证成功返回1 18 | } else { 19 | this.$message.error("仅支持字母数字下划线And账号长度1-10") 20 | return 0 21 | } 22 | // return checkusername(username) 23 | 24 | }, //规则验证账号 25 | checkadress(adress) { 26 | if (/^.{6,30}$/.test(adress)) { 27 | return 1 //验证成功返回1 28 | } else { 29 | this.$message.error("地址长度为6-30") 30 | return 0 31 | } 32 | }, //规则地址 33 | checkage(age) { 34 | if (age > 10 && age < 200) { 35 | return 1 //验证成功返回1 36 | } else { 37 | this.$message.error("年龄区间为 10-200") 38 | return 0 39 | } 40 | }, //规则年龄 41 | checkpassword(password) { 42 | if (/^(?![^a-zA-Z]+$)(?!\D+$).{6,}$/.test(password)) { 43 | // console.log("密码规则验证成功"); 44 | return 1 45 | } else { 46 | this.$message.error("仅支持6个以上任意字符,但必须包括字母和数字") 47 | return 0 48 | } 49 | }, //规则验证密码 50 | checkemail(email) { 51 | if (/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(email)) { 52 | //console.log("邮箱规则验证成功"); 53 | return 1 54 | } else { 55 | this.$message.error("~请输入正确的邮箱格式~") 56 | return 0 57 | } 58 | }, //规则验证邮箱 59 | checkidentify(identify) { 60 | if (/^[0-9]{6}$/.test(identify)) { 61 | // console.log("6位数验证码规则验证成功"); 62 | return 1 63 | } else { 64 | this.$message.error("请输入正确的6位数字验证码") 65 | return 0 66 | } 67 | }, //规则验证验证码 68 | 69 | identifyingEmail(useremailname) { 70 | if (this.checkemail(useremailname)) { //输入框内容符合规则再发送请求 71 | email(useremailname).then(res => { 72 | //console.log(res) 73 | if (res.data == "success") { 74 | this.$message.success("~文本邮件发送成功~") 75 | } else if (res.data == "false") { 76 | this.$message.error("~目标邮箱不存在~") 77 | } else if (res.data == "failure") { 78 | this.$message.error("~文本邮件发送异常!~") 79 | } else if (!res) { 80 | this.$message.error("~服务器未发送邮件~") 81 | } 82 | }) 83 | } 84 | }, //注册验证邮箱 85 | updateidentifyingEmail(useremailname) { 86 | if (this.checkemail(useremailname)) { //输入框内容符合规则再发送请求 87 | upadasendemail(useremailname).then(res => { 88 | //console.log(res) 89 | if (res.data == "success") { 90 | this.$message.success("~文本邮件发送成功~") 91 | } else if (res.data == "false") { 92 | this.$message.error("~目标邮箱不存在~") 93 | } else if (res.data == "failure") { 94 | this.$message.error("~文本邮件发送异常!~") 95 | } else if (res.data == "noemail") { 96 | this.$message.error("~email未注册,请检查后重试~") 97 | } 98 | }) 99 | } 100 | }, //更新验证邮箱 101 | identifyingcode(code, email) { 102 | if (this.checkidentify(code)) { //输入框内容符合规则再发送请求 103 | identifyingcode(code, email).then(res => { 104 | //console.log(res) 105 | if (res.data) { 106 | this.$message.success("验证码正确") 107 | this.emailtag = false; 108 | } else { 109 | this.$message.warning("验证码错误") 110 | } 111 | }) 112 | } 113 | } //验证验证码 114 | 115 | }, 116 | } -------------------------------------------------------------------------------- /mall/src/common/const.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/common/const.js -------------------------------------------------------------------------------- /mall/src/common/eventBus.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | export default new Vue -------------------------------------------------------------------------------- /mall/src/common/loginrule.js: -------------------------------------------------------------------------------- 1 | //规则验证账号输入内容 2 | export function checkusername(username) { 3 | //用户只能绑定一个邮箱,创建一个账号,(不为空,验证,) 4 | if (/^[A-Za-z0-9]{1,10}$/.test(username)) { //1 账号长度1-10 //仅支持字母数字下划线 5 | //console.log("账户规则验证成功"); 6 | return 1 //验证成功返回1 7 | } else { 8 | // alert("仅支持字母数字下划线And账号长度1-10") 9 | this.$message.error("仅支持字母数字下划线And账号长度1-10") 10 | return 0 11 | } 12 | } 13 | //规则验证密码输入内容 14 | export function checkpassword(password) { 15 | if (/^(?![^a-zA-Z]+$)(?!\D+$).{6,}$/.test(password)) { 16 | // console.log("密码规则验证成功"); 17 | return 1 18 | } else { 19 | this.$message.error("仅支持6个以上任意字符,但必须包括字母和数字") 20 | return 0 21 | } 22 | } 23 | //规则验证邮箱输入内容 24 | export function checkemail(email) { 25 | if (/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(email)) { 26 | //console.log("邮箱规则验证成功"); 27 | return 1 28 | } else { 29 | this.$message.error("~请输入正确的邮箱格式~") 30 | return 0 31 | } 32 | } 33 | //规则验证验证码输入 34 | export function checkidentify(identify) { 35 | if (/^[0-9]{6}$/.test(identify)) { 36 | // console.log("6位数验证码规则验证成功"); 37 | return 1 38 | } else { 39 | this.$message.error("请输入正确的6位数字验证码") 40 | return 0 41 | } 42 | } -------------------------------------------------------------------------------- /mall/src/common/mixin.js: -------------------------------------------------------------------------------- 1 | export const mixin={ 2 | methods:{ 3 | newwindow(path){ 4 | let routeUrl = this.$router.resolve(path); 5 | window.open(routeUrl.href, '_blank'); 6 | } //外链跳转 7 | }, 8 | } -------------------------------------------------------------------------------- /mall/src/common/utils.js: -------------------------------------------------------------------------------- 1 | // 防抖函数,解决重复频繁调用问题 2 | export function debounce(fn, delay) { 3 | let timer = null; 4 | return function (...args) { 5 | if (timer) { 6 | clearTimeout(timer); 7 | } 8 | timer = setTimeout(() => { 9 | fn.apply(this, args); 10 | }, delay); 11 | }; 12 | } 13 | 14 | // 时间格式化() 15 | function padLeftZero(str) { 16 | return ("00" + str).substr(str.length); 17 | } 18 | export function formatDate(date, fmt) { 19 | if (/(y+)/.test(fmt)) { 20 | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); 21 | } 22 | 23 | let o = { 24 | "M+": date.getMonth() + 1, 25 | "d+": date.getDate(), 26 | "h+": date.getHours(), 27 | "m+": date.getMinutes(), 28 | "s+": date.getSeconds() 29 | }; 30 | 31 | for (let k in o) { 32 | if (new RegExp(`(${k})`).test(fmt)) { 33 | let str = o[k] + ""; 34 | fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str)); 35 | } 36 | } 37 | 38 | return fmt; 39 | } 40 | 41 | //时间戳转换器 42 | export function formatDatechange(value) { 43 | if (typeof (value) == 'undefined') { 44 | return '' 45 | } else { 46 | let date = new Date(parseInt(value)) 47 | let y = date.getFullYear() 48 | let MM = date.getMonth() + 1 49 | MM = MM < 10 ? ('0' + MM) : MM 50 | let d = date.getDate() 51 | d = d < 10 ? ('0' + d) : d 52 | let h = date.getHours() 53 | h = h < 10 ? ('0' + h) : h 54 | let m = date.getMinutes() 55 | m = m < 10 ? ('0' + m) : m 56 | let s = date.getSeconds() 57 | s = s < 10 ? ('0' + s) : s 58 | return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s 59 | } 60 | } 61 | 62 | // 转义标签名 63 | function htmlEscape(text) { 64 | return text.replace(/[<>"&]/g, function(match, pos, originalText){ 65 | switch(match) { 66 | case "<": { 67 | return "<"; 68 | } 69 | case ">": { 70 | return ">"; 71 | } 72 | case "&": { 73 | return "&"; 74 | } 75 | case "\"": { 76 | return """; 77 | } 78 | } 79 | }); 80 | } 81 | 82 | //数组和对象的递归深拷贝 83 | //深拷贝的两重需要解决的问题 1引用数据不在是地址指向 2多层引用数据也许需要深度赋值 84 | export function deepCopyAdvanced(obj){ 85 | if(obj instanceof Array){ 86 | var copy = []; 87 | for(var i=0,len=obj.length;i=5&&hourtime<9)str='早晨好'; 108 | if(hourtime>=9&&hourtime<12)str='上午好'; 109 | if(hourtime>=12&&hourtime<18)str='下午好'; 110 | if(hourtime>=18&&hourtime<20)str='傍晚好'; 111 | if(hourtime>=20&&hourtime<23)str='晚间好'; 112 | if(hourtime>=23||hourtime<5)str=`夜已深啦,尽早休息 ❤️️`; 113 | return str 114 | } 115 | 116 | //数组对象的模糊搜索 原数组 ,模糊查找关键字,数组对象的字段 117 | export function mohuquerylistobj(list,keyWord,name) { 118 | var reg = new RegExp(keyWord); 119 | var arr = []; 120 | for (var i = 0; i < list.length; i++) { 121 | if (reg.test(list[i][name])) { 122 | arr.push(list[i]); 123 | } 124 | } 125 | return arr; 126 | } 127 | 128 | //排序数组对象(改变原数组) 129 | //list 要排序的数组 obj根据这个属性排序 num 正序还是逆序(1或-1) 130 | export function sortarrayobj(list,obj,num) { 131 | let compare = function (prop) { 132 | return function (obj1, obj2) { 133 | var val1 = obj1[prop]; 134 | var val2 = obj2[prop]; 135 | if (val1 < val2) { 136 | return num; 137 | } else if (val1 > val2) { 138 | return -num; 139 | } else { 140 | return 0; 141 | } 142 | } 143 | } 144 | list.sort(compare(obj)) 145 | } -------------------------------------------------------------------------------- /mall/src/components/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/components/.DS_Store -------------------------------------------------------------------------------- /mall/src/components/common/mouserun.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 64 | 65 | -------------------------------------------------------------------------------- /mall/src/components/common/mousesee.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 36 | 39 | 40 | -------------------------------------------------------------------------------- /mall/src/components/common/viewmore.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /mall/src/components/common/zhezhao.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 57 | 58 | -------------------------------------------------------------------------------- /mall/src/components/content/Card/Card.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 26 | 27 | -------------------------------------------------------------------------------- /mall/src/components/content/goods/goods.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | 26 | -------------------------------------------------------------------------------- /mall/src/components/content/goods/goodsitem.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 37 | 38 | -------------------------------------------------------------------------------- /mall/src/components/content/pubuliuCard/pubuliuCard.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 42 | 43 | -------------------------------------------------------------------------------- /mall/src/components/content/ranklist/ranklist.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 119 | 120 | -------------------------------------------------------------------------------- /mall/src/components/content/ranklist/ranklisthead.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 39 | 40 | -------------------------------------------------------------------------------- /mall/src/i18n/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueI18n from 'vue-i18n' 3 | 4 | import ElementLocale from 'element-ui/lib/locale' 5 | import enLocale from 'element-ui/lib/locale/lang/en' 6 | import zhLocale from 'element-ui/lib/locale/lang/zh-CN' 7 | 8 | import langZh from "@/assets/languages/zh.js" 9 | import langEN from "@/assets/languages/en.js" 10 | 11 | Vue.use(VueI18n) 12 | 13 | const i18n = new VueI18n({ 14 | locale: 'zh', 15 | messages: { 16 | 'zh': { 17 | ...langZh, 18 | ...zhLocale 19 | }, 20 | 'en': { 21 | ...langEN, 22 | ...enLocale 23 | } 24 | } 25 | }) 26 | ElementLocale.i18n((key, value) => i18n.t(key, value)) 27 | 28 | export default i18n -------------------------------------------------------------------------------- /mall/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | //安装使用element 4 | import ElementUI from 'element-ui'; 5 | import 'element-ui/lib/theme-chalk/index.css'; 6 | Vue.use(ElementUI); 7 | //引入vuex (页面刷新vuex数据消失,window.session不消失) 8 | import store from "./store"; 9 | //引入less 10 | import less from 'less' 11 | Vue.use(less) 12 | //图片懒加载插件 13 | import VueLazyLoad from 'vue-lazyload' 14 | Vue.use(VueLazyLoad, { 15 | error: "http://panshi-on.oss-cn-hangzhou.aliyuncs.com/yunxiaoding-mini/other/mall/img/lazy_errorimg.png", 16 | loading: "http://panshi-on.oss-cn-hangzhou.aliyuncs.com/yunxiaoding-mini/other/mall/img/chunse.png", 17 | }) 18 | //动画库 19 | import animated from 'animate.css' 20 | Vue.use(animated) 21 | //国际化 22 | import i18n from './i18n/index' 23 | //引入route 24 | import router from "./router" 25 | 26 | 27 | Vue.config.productionTip = false 28 | 29 | new Vue({ 30 | render: h => h(App), 31 | router, 32 | store, 33 | i18n 34 | }).$mount('#app') -------------------------------------------------------------------------------- /mall/src/network/admin.js: -------------------------------------------------------------------------------- 1 | import {request} from "./request"; 2 | //引入模块 参数加密序列化模块 3 | // import qs from 'qs' 4 | 5 | // user的分页查询 6 | export function pagequery(pageNum,pageSize) { 7 | return request({ 8 | url:'allUser', 9 | method:"post", 10 | params:{ 11 | pageNum,pageSize 12 | } 13 | }) 14 | } 15 | 16 | // userinfo的分页查询 17 | export function userinfopagequery(pageNum,pageSize) { 18 | return request({ 19 | url:'allUserinfo', 20 | method:"post", 21 | params:{ 22 | pageNum,pageSize 23 | } 24 | }) 25 | } 26 | 27 | // order的分页查询 28 | export function orderpagequery(pageNum,pageSize) { 29 | return request({ 30 | url:'allorder', 31 | method:"post", 32 | params:{ 33 | pageNum,pageSize 34 | } 35 | }) 36 | } 37 | 38 | // goods的分页查询 39 | export function goodspagequery(pageNum,pageSize) { 40 | return request({ 41 | url:'allgoodspagequery', 42 | method:"post", 43 | params:{ 44 | pageNum,pageSize 45 | } 46 | }) 47 | } 48 | 49 | //switch切换属性(全是update,所以这里全部使用put请求) 先使用post请求 50 | export function attributechange(id,name,targe) { 51 | return request({ 52 | url:'attributechange', 53 | method:"put", 54 | params:{ 55 | id,name,targe 56 | } 57 | }) 58 | } 59 | 60 | //模糊查询 61 | export function dimquery(queryinfo) { 62 | return request({ 63 | url:'dimquery', 64 | method:"post", 65 | params:{ 66 | queryinfo 67 | } 68 | }) 69 | } 70 | 71 | //添加用户 72 | export function addUser(username,password,email) { 73 | 74 | return request({ 75 | url:'addUser', 76 | method:"post", 77 | params:{ 78 | username,password,email 79 | } 80 | }) 81 | } 82 | 83 | //修改用户 84 | export function editUser(id,username,password,email) { 85 | 86 | return request({ 87 | url:'editUser', 88 | method:"put", 89 | params:{ 90 | id,username,password,email 91 | } 92 | }) 93 | } 94 | 95 | //删除用户 96 | export function deleteUser(id) { 97 | 98 | return request({ 99 | url:'deleteUser', 100 | method:"post", 101 | params:{ 102 | id 103 | } 104 | }) 105 | } 106 | 107 | //修改userinfo 这里id是userinfoid 108 | export function editUserinfo(id,age,adress) { 109 | 110 | return request({ 111 | url:'editUserinfo', 112 | method:"put", 113 | params:{ 114 | id,age,adress 115 | } 116 | }) 117 | } 118 | 119 | 120 | 121 | //test对象传参 使用qs依旧无法把参数翻到对象中传输 ,所以依旧使用单个参数传递的办法 可以说用parms传参 122 | export function test(user) { 123 | return request({ 124 | url:'testobj', 125 | method:"post", //get请求,post请求需要改写请求头 126 | params:{}, 127 | data:{ 128 | user 129 | } 130 | }) 131 | } 132 | 133 | //test对象传参 使用qs依旧无法把参数翻到对象中传输 ,所以依旧使用单个参数传递的办法 可以说用parms传参 134 | export function test2(username) { 135 | 136 | return request({ 137 | url:'testobj2', 138 | method:"post", 139 | params:{ 140 | username 141 | } 142 | }) 143 | } -------------------------------------------------------------------------------- /mall/src/network/admin2.js: -------------------------------------------------------------------------------- 1 | import { 2 | request 3 | } from "./request"; 4 | 5 | // 订单发货 6 | export function sendbyorderid(orderid) { 7 | return request({ 8 | url: 'sendbyorderid', 9 | method: "post", 10 | params: { 11 | orderid 12 | } 13 | }) 14 | } 15 | 16 | //删除订单 17 | export function deleteorder(orderid) { 18 | return request({ 19 | url: 'deleteorder', 20 | method: "post", 21 | params: { 22 | orderid 23 | } 24 | }) 25 | } 26 | 27 | //根据username查找订单 28 | export function queryorder(username) { 29 | return request({ 30 | url: 'queryorder', 31 | method: "post", 32 | params: { 33 | username 34 | } 35 | }) 36 | } 37 | 38 | //根据goodsname查找goods 39 | export function querygoods(goodsname) { 40 | return request({ 41 | url: 'querygoods', 42 | method: "post", 43 | params: { 44 | goodsname 45 | } 46 | }) 47 | } 48 | 49 | // //switch切换属性(全是update,所以这里全部使用put请求) 先使用post请求 50 | // export function issellchange(id,name,targe) { 51 | // return request({ 52 | // url:'issellchange', 53 | // method:"put", 54 | // params:{ 55 | // id,name,targe 56 | // } 57 | // }) 58 | // } 59 | 60 | //获取全部的adminlog 61 | export function getadminloglist() { 62 | return request({ 63 | url: 'getadminloglist', 64 | method: "post", 65 | params: {} 66 | }) 67 | } 68 | //admin的操作记录下来 69 | export function setadminlog(adminname, adminactive) { 70 | return request({ 71 | url: 'setadminlog', 72 | method: "post", 73 | params: { 74 | adminname, 75 | adminactive 76 | } 77 | }) 78 | } 79 | // 添加商品 80 | export function addgoods(goodsname, category, price, goodsdescribe, goodstitle) { 81 | return request({ 82 | url: 'addgoods', 83 | method: "post", 84 | params: { 85 | goodsname, 86 | category, 87 | price, 88 | goodsdescribe, 89 | goodstitle, 90 | } 91 | }) 92 | } 93 | 94 | // 修改商品信息 95 | export function editgoods(goodsid, goodsname, category, nowprice, goodsdescribe, goodstitle) { 96 | return request({ 97 | url: 'editgoods', 98 | method: "post", 99 | params: { 100 | goodsid, 101 | goodsname, 102 | category, 103 | nowprice, 104 | goodsdescribe, 105 | goodstitle, 106 | } 107 | }) 108 | } -------------------------------------------------------------------------------- /mall/src/network/goods.js: -------------------------------------------------------------------------------- 1 | import { 2 | request 3 | } from "./request"; 4 | 5 | // 获取全部goods信息 6 | export function getallgoodsinfo() { 7 | return request({ 8 | url: 'allgoodsinfo', 9 | method: "post" 10 | }) 11 | } 12 | // 获取被下架的goods 13 | export function getoutgoods() { 14 | return request({ 15 | url: 'getoutgoods', 16 | method: "post" 17 | }) 18 | } 19 | // (余货量查询) 20 | // export function firstbuy(goodsid,size) { 21 | // return request({ 22 | // url:'firstbuy', 23 | // method:"post", 24 | // params:{ 25 | // goodsid,size 26 | // } 27 | // }) 28 | // } 29 | // 购买商品下单 30 | export function secondbuy(userid, goodsid, size) { 31 | return request({ 32 | url: 'buy', 33 | method: "post", 34 | params: { 35 | userid, 36 | goodsid, 37 | size 38 | } 39 | }) 40 | } 41 | 42 | export function addsizecount(goodsid, size, count) { 43 | return request({ 44 | url: 'addsizecount', 45 | method: "post", 46 | params: { 47 | goodsid, 48 | size, 49 | count 50 | } 51 | }) 52 | } 53 | 54 | export function editsizecount(goodsid, size, count) { 55 | return request({ 56 | url: 'editsizecount', 57 | method: "post", 58 | params: { 59 | goodsid, 60 | size, 61 | count 62 | } 63 | }) 64 | } -------------------------------------------------------------------------------- /mall/src/network/img.js: -------------------------------------------------------------------------------- 1 | import {request} from "./request"; 2 | 3 | export function upload(file) { // 使用分布传递参数,后台只接受json格式,axios的这个怎么专json? 4 | return request({ 5 | url:'/upload', 6 | method:"post", 7 | params:file 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /mall/src/network/login.js: -------------------------------------------------------------------------------- 1 | import {request} from "./request"; 2 | 3 | 4 | export function login(username,password) { // 使用分布传递参数,后台只接受json格式,axios的这个怎么专json? 5 | return request({ 6 | url:'login', 7 | method:"post", 8 | params:{ 9 | username, 10 | password 11 | } 12 | }) 13 | } 14 | 15 | export function register(username,password,email,identify) { 16 | return request({ 17 | url:'tourist/register', 18 | method:"post", 19 | params:{ 20 | username, 21 | password, 22 | email, 23 | identify 24 | 25 | } 26 | }) 27 | } 28 | 29 | export function email(email) { 30 | return request({ 31 | url:'tourist/sendEmail', 32 | method:"post", 33 | params:{ 34 | email 35 | } 36 | }) 37 | } 38 | 39 | export function upadasendemail(email) { 40 | return request({ 41 | url:'tourist/forgetpasswordtest', 42 | method:"post", 43 | params:{ 44 | email 45 | } 46 | }) 47 | } 48 | 49 | export function identifyingcode(code,email){ 50 | return request({ 51 | url:'tourist/testCode', 52 | method:"post", 53 | params:{code,email} 54 | }) 55 | } 56 | 57 | export function updatepassword(password,email){ 58 | return request({ 59 | url:'tourist/updatepassword', 60 | method:"post", 61 | params:{password,email} 62 | }) 63 | } 64 | 65 | //获取所有用户信息,存放到state 66 | export function getuserallinfo(username) { 67 | return request({ 68 | url:'getuserallinfo', 69 | method:"post", 70 | params:{ 71 | username 72 | } 73 | }) 74 | } -------------------------------------------------------------------------------- /mall/src/network/request.js: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | 4 | //做一个拦截器的封装 5 | export function request(config) { 6 | const instance1 = axios.create({ 7 | baseURL: 'http://allsever.ssdwgg.cn/mall', 8 | // baseURL: 'http://localhost:9060/mall', 9 | timeout: 5000, 10 | }) 11 | 12 | //此处是拦截器的作用 13 | instance1.interceptors.request.use(config => { 14 | // console.log(config) 15 | return config //拦截下来了请求,做完修改请求一定要发送出去 16 | }, err => { 17 | // console.log(err); 18 | }) 19 | 20 | //此处是响应拦截,接收拦截器重新发送出来的请求 同样也需要data 21 | instance1.interceptors.response.use(res => { 22 | return res 23 | }, err => { 24 | 25 | }) 26 | 27 | return instance1(config) //因为axios的返回值本身就是promise 28 | } -------------------------------------------------------------------------------- /mall/src/store/actions.js: -------------------------------------------------------------------------------- 1 | import { 2 | SET_USER, 3 | SET_GOODSINFO 4 | } from "./mutation-types"; 5 | import {getuserallinfo} from "@/network/login"; 6 | import {getallgoodsinfo} from "@/network/goods"; 7 | 8 | export default { //action中进行异步操作 返回一个promise 9 | setuserinfo(context,payload){ 10 | return new Promise( (resolve, reject)=>{ 11 | getuserallinfo(payload) 12 | .then(res=>{ 13 | context.commit(SET_USER,res.data); 14 | if(!!res.data){ 15 | resolve() 16 | }else{ 17 | reject() 18 | } 19 | }) 20 | }) 21 | }, 22 | setgoodslist(context){ 23 | return new Promise( (resolve, reject)=>{ 24 | getallgoodsinfo() 25 | .then(res=>{ 26 | context.commit(SET_GOODSINFO,res.data); 27 | if(!!res.data){ 28 | resolve() 29 | }else{ 30 | reject() 31 | } 32 | }) 33 | }) 34 | } 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /mall/src/store/getters.js: -------------------------------------------------------------------------------- 1 | import {deepCopyAdvanced, mohuquerylistobj} from "@/common/utils"; 2 | 3 | export default{ 4 | //总货物 5 | goodslist: state => state.goodslist, 6 | 7 | springgoodslist(state){ 8 | let springgoodslist = state.goodslist.filter(x=>{ 9 | if(x.category=="spring") return x 10 | }) 11 | return springgoodslist 12 | }, 13 | //季节分类 14 | categorygoodslist: (state) => (category) => { 15 | let list = state.goodslist.filter(x=>{ 16 | if(x.category== category ) return x 17 | }) 18 | return list 19 | }, 20 | 21 | //销量排行榜 22 | hotlist(state){ 23 | //参考函数,正逆序由 -1 和1 决定 24 | var compare = function (prop) { 25 | return function (obj1, obj2) { 26 | var val1 = obj1[prop]; 27 | var val2 = obj2[prop];if (val1 < val2) { 28 | return 1; 29 | } else if (val1 > val2) { 30 | return -1; 31 | } else { 32 | return 0; 33 | } 34 | } 35 | } 36 | // 这个方法的弊端就是undefined、function、symbol 会在转换过程中被忽略 37 | // let hotlist = JSON.parse( JSON.stringify(state.goodslist) ) // 这里实现了对obj的深拷贝 38 | let hotlist = deepCopyAdvanced(state.goodslist) 39 | return hotlist.sort(compare("sellcount")) 40 | }, 41 | 42 | //折扣排行榜 43 | salelist(state){ 44 | var compare = function (prop) { 45 | return function (obj1, obj2) { 46 | var val1 = obj1[prop]; 47 | var val2 = obj2[prop];if (val1 < val2) { 48 | return -1; 49 | } else if (val1 > val2) { 50 | return 1; 51 | } else { 52 | return 0; 53 | } 54 | } 55 | } 56 | 57 | let salelist = deepCopyAdvanced(state.goodslist) 58 | 59 | // let salelist = JSON.parse( JSON.stringify(state.goodslist) ) 60 | 61 | salelist.forEach(obj=>{ 62 | obj.zhekoulv = obj.nowprice/obj.price 63 | }) 64 | 65 | return salelist.sort(compare("zhekoulv")) 66 | }, 67 | 68 | //新发售排行榜 69 | newlist(state){ 70 | var compare = function (prop) { 71 | return function (obj1, obj2) { 72 | var val1 = obj1[prop]; 73 | var val2 = obj2[prop];if (val1 < val2) { 74 | return 1; 75 | } else if (val1 > val2) { 76 | return -1; 77 | } else { 78 | return 0; 79 | } 80 | } 81 | } 82 | let newlist = deepCopyAdvanced(state.goodslist) 83 | return newlist.sort(compare("createTime")) 84 | }, 85 | 86 | //根据id拿到每一件货物的数据 87 | getgoodsbyid: (state) => (id) => { 88 | // find函数是浅复制元素,会把对象中的多层引用类型循环复制第一个 89 | let obj = {} 90 | state.goodslist.forEach(x=>{ 91 | if( x.goodsid == id){ 92 | obj = deepCopyAdvanced(x) 93 | } 94 | }) 95 | return obj 96 | }, 97 | //模糊搜索 98 | getgoodsbyserch: (state) => (querystr) => { 99 | let allgoodslist = deepCopyAdvanced(state.goodslist) 100 | let querylist = mohuquerylistobj(allgoodslist,querystr,"goodstitle") 101 | return querylist 102 | }, 103 | } 104 | -------------------------------------------------------------------------------- /mall/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuex from "vuex"; 3 | import actions from "./actions"; 4 | import mutations from "./mutations"; 5 | import getters from "./getters"; 6 | 7 | //安装插件 8 | Vue.use(Vuex) 9 | //创建对象 10 | const store = new Vuex.Store({ 11 | state:{ 12 | //所有商品 13 | goodslist:[], 14 | user:{}, 15 | havebug:false, 16 | }, 17 | actions, //将模块抽离到其他的文件夹 18 | mutations, 19 | getters 20 | }) 21 | 22 | //导出对象并到main处挂载 23 | export default store 24 | -------------------------------------------------------------------------------- /mall/src/store/mutation-types.js: -------------------------------------------------------------------------------- 1 | //把mutations中的方法名称抽离到,可以统一修改mutatios和actions时候写的参数方法(一致) 2 | 3 | export const SET_USER = "setuser" 4 | export const SET_GOODSINFO = "setgoodsinfo" -------------------------------------------------------------------------------- /mall/src/store/mutations.js: -------------------------------------------------------------------------------- 1 | import { 2 | SET_USER, 3 | SET_GOODSINFO 4 | } from "./mutation-types"; 5 | 6 | export default { 7 | 8 | [SET_USER](state, user) { 9 | //为什么不需要对象深拷贝??? 地址赋值? 10 | state.user = user; 11 | }, 12 | [SET_GOODSINFO](state, goodsinfo) { 13 | state.goodslist = goodsinfo; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /mall/src/views/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/views/.DS_Store -------------------------------------------------------------------------------- /mall/src/views/Admin/AdminLog/AdminLog.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 109 | 110 | -------------------------------------------------------------------------------- /mall/src/views/Admin/HelloAdmin/HelloAdmin.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 39 | 40 | -------------------------------------------------------------------------------- /mall/src/views/Error/error.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | -------------------------------------------------------------------------------- /mall/src/views/Home/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/mall/src/views/Home/.DS_Store -------------------------------------------------------------------------------- /mall/src/views/Home/Detail/childcmp/sizetable.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 57 | 58 | -------------------------------------------------------------------------------- /mall/src/views/Home/Home/ChildCmp/AsideBody.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 74 | 75 | -------------------------------------------------------------------------------- /mall/src/views/Home/ShopDetail/ShopDetail.vue: -------------------------------------------------------------------------------- 1 | 16 | 55 | 56 | -------------------------------------------------------------------------------- /mall/src/views/Home/ShowGoods/ShowGoods.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 60 | 61 | 128 | -------------------------------------------------------------------------------- /mall/src/views/Home/ShowGoods/all.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 110 | 111 | -------------------------------------------------------------------------------- /mall/src/views/Home/firstinit/firstinit.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /mall/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports ={ 2 | devServer: { 3 | host:'0.0.0.0', //只要使用localhost就会出现尺寸错乱 4 | // host: 'www.test.com',//如果是真机测试,就使用这个IP 5 | port: 8080, //也可以在webstorm里面修改 6 | disableHostCheck: true, 7 | // https: false, // https:{type:Boolean} 8 | open: true, // 配置自动启动浏览器 9 | }, 10 | configureWebpack:{ 11 | resolve:{ 12 | alias:{ 13 | "assets":"@/assets", 14 | "common":"@/common", 15 | "components":"@/components", 16 | "network":"@/network", 17 | "views":"@/views", 18 | "store":"@/store", 19 | } 20 | } 21 | } 22 | } 23 | { 24 | // // 基本路径 baseURL已经过时 25 | // publicPath: './', 26 | // // 输出文件目录 27 | // outputDir: 'dist', 28 | // // eslint-loader 是否在保存的时候检查 29 | // lintOnSave: true, 30 | // // use the full build with in-browser compiler? 31 | // // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only 32 | // // compiler: false, 33 | // // webpack配置 34 | // // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md 35 | // chainWebpack: () => {}, 36 | // configureWebpack: () => {}, 37 | // // vue-loader 配置项 38 | // // https://vue-loader.vuejs.org/en/options.html 39 | // // vueLoader: {}, 40 | // // 生产环境是否生成 sourceMap 文件 41 | // productionSourceMap: true, 42 | // // css相关配置 43 | // css: { 44 | // // 是否使用css分离插件 ExtractTextPlugin 45 | // extract: true, 46 | // // 开启 CSS source maps? 47 | // sourceMap: false, 48 | // // css预设器配置项 49 | // loaderOptions: {}, 50 | // // 启用 CSS modules for all css / pre-processor files. 51 | // modules: false 52 | // }, 53 | // // use thread-loader for babel & TS in production build 54 | // // enabled by default if the machine has more than 1 cores 55 | // parallel: require('os').cpus().length > 1, 56 | // // 是否启用dll 57 | // // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode 58 | // // dll: false, 59 | // // PWA 插件相关配置 60 | // // see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa 61 | // pwa: {}, 62 | // // webpack-dev-server 相关配置 63 | // devServer: { 64 | // open: process.platform === 'darwin', 65 | // disableHostCheck: true, 66 | // host: 'www.test.com',//如果是真机测试,就使用这个IP 67 | // port: 1234, 68 | // https: false, 69 | // hotOnly: false, 70 | // before: app => {} 71 | // }, 72 | // // 第三方插件配置 73 | // pluginOptions: { 74 | // // ... 75 | // }, 76 | } -------------------------------------------------------------------------------- /sever/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/.DS_Store -------------------------------------------------------------------------------- /sever/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # 默认忽略的文件 2 | /shelf/ 3 | /workspace.xml 4 | # 基于编辑器的 HTTP 客户端请求 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /sever/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /sever/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sever/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /sever/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sever/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sever/img/1467068952348721153tximg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/img/1467068952348721153tximg.jpg -------------------------------------------------------------------------------- /sever/img/nulltximg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/img/nulltximg.jpg -------------------------------------------------------------------------------- /sever/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.5.5 9 | 10 | 11 | com.ryw 12 | finalproject 13 | 0.0.1-SNAPSHOT 14 | finalproject 15 | finalproject 16 | 17 | 1.8 18 | 19 | 20 | 21 | 22 | 23 | mysql 24 | mysql-connector-java 25 | runtime 26 | 27 | 28 | 29 | org.projectlombok 30 | lombok 31 | 32 | 33 | 34 | 35 | com.baomidou 36 | mybatis-plus-boot-starter 37 | 3.0.5 38 | 39 | 40 | 41 | org.springframework.boot 42 | spring-boot-starter-jdbc 43 | 44 | 45 | org.springframework.boot 46 | spring-boot-starter-web 47 | 48 | 49 | org.mybatis.spring.boot 50 | mybatis-spring-boot-starter 51 | 2.1.2 52 | 53 | 54 | 55 | org.springframework.boot 56 | spring-boot-starter-test 57 | test 58 | 59 | 60 | org.junit.vintage 61 | junit-vintage-engine 62 | 63 | 64 | 65 | 66 | 67 | com.alibaba 68 | fastjson 69 | 1.2.28 70 | 71 | 72 | 73 | org.springframework.boot 74 | spring-boot-starter-mail 75 | 76 | 77 | 78 | 79 | 80 | org.springframework.boot 81 | spring-boot-maven-plugin 82 | 2.6.3 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /sever/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/src/.DS_Store -------------------------------------------------------------------------------- /sever/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/src/main/.DS_Store -------------------------------------------------------------------------------- /sever/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/src/main/java/.DS_Store -------------------------------------------------------------------------------- /sever/src/main/java/com/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/src/main/java/com/.DS_Store -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/sever/src/main/java/com/ryw/.DS_Store -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/FinalprojectApplication.java: -------------------------------------------------------------------------------- 1 | package com.ryw; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | 7 | @SpringBootApplication 8 | public class FinalprojectApplication { 9 | 10 | public static void main(String[] args) { 11 | SpringApplication.run(FinalprojectApplication.class, args); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/config/MyBatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package com.ryw.config; 2 | 3 | import com.baomidou.mybatisplus.core.injector.ISqlInjector; 4 | import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; 5 | import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; 6 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 7 | import org.mybatis.spring.annotation.MapperScan; 8 | import org.springframework.context.annotation.Bean; 9 | import org.springframework.context.annotation.Configuration; 10 | import org.springframework.transaction.annotation.EnableTransactionManagement; 11 | 12 | 13 | @MapperScan("com.ryw.mapper") //扫描mapper 14 | @EnableTransactionManagement //事务控制 15 | @Configuration //代表这是一个配置类 16 | public class MyBatisPlusConfig { 17 | 18 | // 注册乐观锁插件 19 | @Bean 20 | public OptimisticLockerInterceptor optimisticLockerInterceptor() { 21 | return new OptimisticLockerInterceptor(); 22 | } 23 | 24 | // 分页插件 25 | @Bean 26 | public PaginationInterceptor paginationInterceptor() { 27 | return new PaginationInterceptor(); 28 | } 29 | 30 | // 逻辑删除组件! 31 | @Bean 32 | public ISqlInjector sqlInjector() { 33 | return new LogicSqlInjector(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/config/WebConfig.java: -------------------------------------------------------------------------------- 1 | package com.ryw.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 6 | 7 | @Configuration 8 | public class WebConfig extends WebMvcConfigurerAdapter { 9 | /* 10 | * 1 设置访问任何请求都允许跨域 11 | * 2 设置允许跨域的访问来源地址 12 | * 3 设置访问的方法 13 | 4 最大响应时间 14 | * 5 是否允许携带参数 15 | */ 16 | @Override 17 | public void addCorsMappings(CorsRegistry registry) { 18 | // 设置允许跨域的路由 19 | registry.addMapping("/**") 20 | // 设置允许跨域请求的域名 21 | .allowedOriginPatterns("*") 22 | // 是否允许证书(cookies) 23 | .allowCredentials(true) 24 | // 设置允许的方法 25 | .allowedMethods("*") 26 | // 跨域允许时间 27 | .maxAge(3600); 28 | } 29 | 30 | 31 | } 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/controller/AdminController.java: -------------------------------------------------------------------------------- 1 | package com.ryw.controller; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.ryw.entity.Adminactive; 5 | import com.ryw.mapper.AdminactiveMapper; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.bind.annotation.CrossOrigin; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RequestParam; 10 | import org.springframework.web.bind.annotation.RestController; 11 | 12 | import java.util.List; 13 | 14 | @RestController 15 | public class AdminController { 16 | @Autowired 17 | private AdminactiveMapper adminactiveMapper ; 18 | 19 | @CrossOrigin 20 | @RequestMapping("/getadminloglist") //查看adminloglist 21 | public String getadminloglist() 22 | { 23 | List adminactives = adminactiveMapper.selectList(null); 24 | String json = JSON.toJSONString(adminactives); 25 | return json; 26 | } 27 | 28 | @RequestMapping("/setadminlog") //记录管理员行为 29 | public String setadminlog(@RequestParam("adminname") String adminname, 30 | @RequestParam("adminactive") String adminactive, 31 | Adminactive aa) 32 | { 33 | aa.setAdminname(adminname); 34 | aa.setAdminactive(adminactive); 35 | adminactiveMapper.insert(aa); 36 | return "success"; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/controller/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.ryw.controller; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.alibaba.fastjson.JSONObject; 5 | import com.alibaba.fastjson.annotation.JSONField; 6 | import com.alibaba.fastjson.serializer.ToStringSerializer; 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 | import com.ryw.entity.User; 9 | import com.ryw.entity.Userinfo; 10 | import com.ryw.entity.Userorder; 11 | import com.ryw.mapper.UserMapper; 12 | import com.ryw.mapper.UserinfoMapper; 13 | import com.ryw.mapper.UserorderMapper; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | import org.springframework.web.bind.annotation.*; 16 | 17 | import java.util.*; 18 | 19 | @RestController //返回值字符 20 | public class LoginController { 21 | @Autowired 22 | private UserMapper userMapper; 23 | @Autowired 24 | private UserinfoMapper userinfoMapper; 25 | @Autowired 26 | private UserorderMapper userorderMapper; 27 | 28 | @CrossOrigin //所有方法跨域 29 | @RequestMapping("/login") //用户和管理员登录 30 | public String userLogin(@RequestParam("username") String username, 31 | @RequestParam("password") String password) 32 | { //接收传来的参数,参数是user对象 参数格式要一致 33 | String str = "error"; 34 | HashMap map = new HashMap<>(); // 自定义要查的条件 35 | map.put("username",username); 36 | map.put("password",password); 37 | List users = userMapper.selectByMap(map); 38 | if (!users.isEmpty()) { 39 | str = "normaluser"; //设置为普通用户 40 | 41 | if(users.get(0).getAdmin()==1){ //判断是否是管理员 (管理员的username不能重复),用户email不能重复 42 | str = "admin"; 43 | } 44 | } 45 | // System.out.println(str); 46 | return str; 47 | } 48 | 49 | @RequestMapping("/getuserallinfo") //获取用户所有信息 50 | public String userLogin(@RequestParam("username") String username, 51 | User user, Userinfo userinfo) 52 | { 53 | QueryWrapper wrapperuser = new QueryWrapper<>(); 54 | wrapperuser.eq("username",username); 55 | user = userMapper.selectOne(wrapperuser); 56 | // System.out.println("============================"+user); 57 | QueryWrapper wrapperuserinfo = new QueryWrapper<>(); 58 | wrapperuserinfo.eq("id",user.getId()); 59 | userinfo = userinfoMapper.selectOne(wrapperuserinfo); 60 | 61 | QueryWrapper wrapperuserorder = new QueryWrapper<>(); 62 | wrapperuserorder.eq("id",user.getId()); 63 | List userorderlist = new ArrayList<>(); 64 | userorderlist = userorderMapper.selectList(wrapperuserorder); 65 | 66 | HashMap map = new HashMap<>(); 67 | // System.out.println(user.getId().toString()); 68 | map.put("id",user.getId().toString()); 69 | map.put("username",user.getUsername()); 70 | map.put("password",user.getPassword()); 71 | map.put("email",user.getEmail()); 72 | map.put("createTime",user.getCreateTime()); 73 | map.put("userinfo",userinfo); 74 | map.put("orderlist",userorderlist); 75 | String userallinfo_json = JSON.toJSONString(map); 76 | return userallinfo_json; 77 | } 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | @RequestMapping(value = "/testobj", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") 86 | public String testobj(@RequestBody JSONObject jsonParam) 87 | { 88 | // System.out.println(jsonParam.toJSONString()); 89 | // String username=jsonParam.get("username").toString(); 90 | // System.out.println("username : " + username); 91 | // System.out.println("jsonParam : " + jsonParam); 92 | return "testobj success"; 93 | } 94 | 95 | @RequestMapping("/testobj2") 96 | public String testobj2(@RequestParam("username") String username) 97 | { 98 | // System.out.println("username : " + username); 99 | return "testobj2 success"; 100 | } 101 | 102 | @RequestMapping("/test") 103 | public String test() 104 | { 105 | return "test success"; 106 | } 107 | 108 | 109 | } 110 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/controller/OrderController.java: -------------------------------------------------------------------------------- 1 | package com.ryw.controller; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.ryw.entity.User; 7 | import com.ryw.entity.Userorder; 8 | import com.ryw.mapper.UserinfoMapper; 9 | import com.ryw.mapper.UserorderMapper; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.web.bind.annotation.CrossOrigin; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RequestParam; 14 | import org.springframework.web.bind.annotation.RestController; 15 | 16 | import java.util.HashMap; 17 | import java.util.List; 18 | 19 | @RestController 20 | public class OrderController { 21 | 22 | @Autowired 23 | UserorderMapper userorderMapper; 24 | 25 | @CrossOrigin 26 | @RequestMapping("/allorder") // 分页查询 和全部数据条数 27 | public String allorder(@RequestParam("pageNum") int pageNum , 28 | @RequestParam("pageSize") int pageSize ){ //接收传来的参数,这里了封装一个实体类 29 | 30 | Page page = new Page<>(pageNum,pageSize); 31 | userorderMapper.selectPage(page, null); 32 | List userorders = page.getRecords(); //分页查询出的用户数据 33 | HashMap res = new HashMap<>(); 34 | long numbers = page.getTotal();// 总条数 35 | res.put("numbers",numbers); 36 | res.put("data",userorders); 37 | String json = JSON.toJSONString(res); 38 | return json; 39 | } 40 | 41 | @RequestMapping("/sendbyorderid") 42 | public String sendbyorderid(@RequestParam("orderid") Long orderid){ 43 | 44 | Userorder userorder = userorderMapper.selectById(orderid); 45 | userorder.setIssend(1); 46 | int count = userorderMapper.updateById(userorder); 47 | String str; 48 | if(count>0)str ="success"; 49 | else str = "false"; 50 | return str; 51 | 52 | } 53 | 54 | @RequestMapping("/deleteorder") 55 | public String deleteorder(@RequestParam("orderid") Long orderid){ 56 | int i = userorderMapper.deleteById(orderid); 57 | String str; 58 | if(i>0)str ="success"; 59 | else str = "false"; 60 | return str; 61 | } 62 | 63 | @RequestMapping("/queryorder") 64 | public List queryorder(@RequestParam("username") String username){ 65 | QueryWrapper queryWrapper = new QueryWrapper(); 66 | queryWrapper.like(username!=null,"username",username); 67 | List orderlist = userorderMapper.selectList(queryWrapper); 68 | return orderlist ; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/controller/UserInfoController.java: -------------------------------------------------------------------------------- 1 | package com.ryw.controller; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.ryw.entity.Userinfo; 7 | import com.ryw.mapper.UserMapper; 8 | import com.ryw.mapper.UserinfoMapper; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.*; 11 | import org.springframework.web.multipart.MultipartFile; 12 | 13 | import java.io.File; 14 | import java.io.IOException; 15 | import java.util.HashMap; 16 | import java.util.List; 17 | 18 | @RestController 19 | public class UserInfoController { 20 | @Autowired 21 | UserinfoMapper userinfoMapper; 22 | @Autowired 23 | UserMapper userMapper; 24 | 25 | @CrossOrigin 26 | @RequestMapping("/allUserinfo") // 分页查询userinfo 和全部数据条数 27 | public String getUserList(@RequestParam("pageNum") int pageNum , 28 | @RequestParam("pageSize") int pageSize ) 29 | { 30 | Page page = new Page<>(pageNum,pageSize); 31 | List userinfos = userinfoMapper.userinfoPagelistAnduser(page);//分页查询并且多表链接 32 | HashMap res = new HashMap<>(); 33 | long numbers = page.getTotal(); 34 | res.put("numbers",numbers); 35 | res.put("data",userinfos); 36 | // System.out.println("总条数:"+numbers); 37 | String users_json = JSON.toJSONString(res); 38 | return users_json; 39 | } 40 | 41 | @RequestMapping("/editUserinfo") //修改用户基础信息userinfo 42 | public String editUserinfo(@RequestParam("id") Long id, 43 | @RequestParam("age") int age, 44 | @RequestParam("adress") String adress, 45 | Userinfo userinfo){ 46 | QueryWrapper wrapper = new QueryWrapper<>(); 47 | wrapper.eq("id",id); 48 | userinfo = userinfoMapper.selectOne(wrapper); 49 | userinfo.setTximg("/tximg/inittximg.jpg"); 50 | userinfo.setAdress(adress); 51 | userinfo.setAge(age); 52 | int result= userinfoMapper.updateById(userinfo); 53 | if(result!=0){ 54 | return "updatesuccess"; 55 | } 56 | return "error"; 57 | } 58 | 59 | @RequestMapping("/uploadtximg") //头像图片上传 60 | public String uploadtximg(@RequestParam("file") MultipartFile file, 61 | String id){ 62 | File path = new File("/home/www/dist/tximg"); //服务器地址 63 | // File path = new File("/Users/renshuaiweidemac/Desktop/毕设/YG_java/img"); 64 | if(!path.exists()){ 65 | path.mkdir(); 66 | } 67 | File tofile = new File(path,id+"tximg.jpg"); //用id命名 68 | try { 69 | file.transferTo(tofile); 70 | // 存入userinfo表中"/tximg/"+id+"tximg.jpg" 71 | QueryWrapper wrapper = new QueryWrapper<>(); 72 | wrapper.eq("id",id); 73 | Userinfo userinfo = userinfoMapper.selectOne(wrapper); 74 | userinfo.setTximg("/tximg/"+id+"tximg.jpg"); 75 | int result= userinfoMapper.updateById(userinfo); 76 | if(result!=0){ 77 | return "success"; 78 | } 79 | return "false"; 80 | }catch (IOException e){ 81 | e.printStackTrace(); 82 | return "false"; 83 | } 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Adminactive.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.*; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Adminactive { 16 | 17 | @TableId(type = IdType.ID_WORKER) 18 | @JSONField(serializeUsing= ToStringSerializer.class) 19 | private Long activetableid; 20 | 21 | 22 | private String adminname; 23 | private String adminactive; 24 | 25 | 26 | @TableLogic //逻辑删除注解 (内部进行更新) 27 | private Integer deleted; 28 | 29 | @Version //乐观锁注解 30 | private Integer version; 31 | 32 | @TableField(fill = FieldFill.INSERT) //内容自动填充(插入时自动填充时间) 33 | private Date createTime; 34 | @TableField(fill = FieldFill.INSERT_UPDATE)//内容自动填充(修改时自动填充时间) 35 | private Date updateTime; 36 | 37 | public String getAdminname() { 38 | return adminname; 39 | } 40 | 41 | public void setAdminname(String adminname) { 42 | this.adminname = adminname; 43 | } 44 | 45 | public String getAdminactive() { 46 | return adminactive; 47 | } 48 | 49 | public void setAdminactive(String adminactive) { 50 | this.adminactive = adminactive; 51 | } 52 | 53 | public Integer getDeleted() { 54 | return deleted; 55 | } 56 | 57 | public void setDeleted(Integer deleted) { 58 | this.deleted = deleted; 59 | } 60 | 61 | public Integer getVersion() { 62 | return version; 63 | } 64 | 65 | public void setVersion(Integer version) { 66 | this.version = version; 67 | } 68 | 69 | public Date getCreateTime() { 70 | return createTime; 71 | } 72 | 73 | public void setCreateTime(Date createTime) { 74 | this.createTime = createTime; 75 | } 76 | 77 | public Date getUpdateTime() { 78 | return updateTime; 79 | } 80 | 81 | public void setUpdateTime(Date updateTime) { 82 | this.updateTime = updateTime; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Goods.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.*; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Goods { 17 | 18 | @TableId(type = IdType.ID_WORKER) 19 | @JSONField(serializeUsing= ToStringSerializer.class) 20 | private Long goodsid; 21 | 22 | private String goodsname; 23 | private String category; 24 | private String goodstitle; 25 | private String goodsdescribe; 26 | 27 | private double price; 28 | private double nowprice; 29 | 30 | private int sellcount; 31 | 32 | @TableField(exist = false) //sql查询的时候不放在条件中 33 | private List imglist; 34 | @TableField(exist = false) //sql查询的时候不放在条件中 35 | private List sizecountlist ; 36 | 37 | @TableLogic //逻辑删除注解 (内部进行更新) 38 | private Integer deleted; 39 | 40 | @TableField(fill = FieldFill.INSERT) //内容自动填充(插入时自动填充时间) 41 | private Date createTime; 42 | @TableField(fill = FieldFill.INSERT_UPDATE)//内容自动填充(修改时自动填充时间) 43 | private Date updateTime; 44 | 45 | public String getGoodsname() { 46 | return goodsname; 47 | } 48 | 49 | public void setGoodsname(String goodsname) { 50 | this.goodsname = goodsname; 51 | } 52 | 53 | public String getCategory() { 54 | return category; 55 | } 56 | 57 | public void setCategory(String category) { 58 | this.category = category; 59 | } 60 | 61 | public String getGoodstitle() { 62 | return goodstitle; 63 | } 64 | 65 | public void setGoodstitle(String goodstitle) { 66 | this.goodstitle = goodstitle; 67 | } 68 | 69 | public String getGoodsdescribe() { 70 | return goodsdescribe; 71 | } 72 | 73 | public void setGoodsdescribe(String goodsdescribe) { 74 | this.goodsdescribe = goodsdescribe; 75 | } 76 | 77 | public double getPrice() { 78 | return price; 79 | } 80 | 81 | public void setPrice(double price) { 82 | this.price = price; 83 | } 84 | 85 | public double getNowprice() { 86 | return nowprice; 87 | } 88 | 89 | public void setNowprice(double nowprice) { 90 | this.nowprice = nowprice; 91 | } 92 | 93 | public int getSellcount() { 94 | return sellcount; 95 | } 96 | 97 | public void setSellcount(int sellcount) { 98 | this.sellcount = sellcount; 99 | } 100 | 101 | public List getImglist() { 102 | return imglist; 103 | } 104 | 105 | public void setImglist(List imglist) { 106 | this.imglist = imglist; 107 | } 108 | 109 | public List getSizecountlist() { 110 | return sizecountlist; 111 | } 112 | 113 | public void setSizecountlist(List sizecountlist) { 114 | this.sizecountlist = sizecountlist; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Goodsimg.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class Goodsimg { 15 | @TableId(type = IdType.ID_WORKER) 16 | @JSONField(serializeUsing= ToStringSerializer.class) 17 | private Long imgtableid; 18 | 19 | @JSONField(serializeUsing= ToStringSerializer.class) 20 | private Long goodsid; 21 | 22 | private String goodsimg; 23 | 24 | public String getGoodsimg() { 25 | return goodsimg; 26 | } 27 | 28 | public void setGoodsimg(String goodsimg) { 29 | this.goodsimg = goodsimg; 30 | } 31 | 32 | public Long getImgtableid() { 33 | return imgtableid; 34 | } 35 | 36 | public void setImgtableid(Long imgtableid) { 37 | this.imgtableid = imgtableid; 38 | } 39 | 40 | public Long getGoodsid() { 41 | return goodsid; 42 | } 43 | 44 | public void setGoodsid(Long goodsid) { 45 | this.goodsid = goodsid; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Sizerestcount.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class Sizerestcount { 15 | @TableId(type = IdType.ID_WORKER) 16 | @JSONField(serializeUsing= ToStringSerializer.class) 17 | private Long sizetableid; 18 | 19 | @JSONField(serializeUsing= ToStringSerializer.class) 20 | private Long goodsid; 21 | 22 | private String size; 23 | private int restcount; 24 | 25 | public String getSize() { 26 | return size; 27 | } 28 | 29 | public void setSize(String size) { 30 | this.size = size; 31 | } 32 | 33 | public int getRestcount() { 34 | return restcount; 35 | } 36 | 37 | public void setRestcount(int restcount) { 38 | this.restcount = restcount; 39 | } 40 | 41 | public Long getSizetableid() { 42 | return sizetableid; 43 | } 44 | 45 | public void setSizetableid(Long sizetableid) { 46 | this.sizetableid = sizetableid; 47 | } 48 | 49 | public Long getGoodsid() { 50 | return goodsid; 51 | } 52 | 53 | public void setGoodsid(Long goodsid) { 54 | this.goodsid = goodsid; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.*; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | 16 | public class User { 17 | 18 | //long类型出现前端精度失灵,使用注解转成字符串形式 19 | @JSONField(serializeUsing= ToStringSerializer.class) 20 | private Long id; 21 | 22 | private String username; 23 | private String password; 24 | private String email; 25 | private int admin; 26 | 27 | @TableLogic //逻辑删除注解 (内部进行更新) 28 | private Integer deleted; 29 | 30 | @Version //乐观锁注解 31 | private Integer version; 32 | 33 | @TableField(fill = FieldFill.INSERT) //内容自动填充(插入时自动填充时间) 34 | private Date createTime; 35 | @TableField(fill = FieldFill.INSERT_UPDATE)//内容自动填充(修改时自动填充时间) 36 | private Date updateTime; 37 | 38 | 39 | //构造类和setget方法 和tostring方法 40 | 41 | 42 | public int getAdmin() { 43 | return admin; 44 | } 45 | 46 | public void setAdmin(int admin) { 47 | this.admin = admin; 48 | } 49 | 50 | public String getUsername() { 51 | return username; 52 | } 53 | 54 | public void setUsername(String username) { 55 | this.username = username; 56 | } 57 | 58 | public String getPassword() { 59 | return password; 60 | } 61 | 62 | public void setPassword(String password) { 63 | this.password = password; 64 | } 65 | 66 | public String getEmail() { 67 | return email; 68 | } 69 | 70 | public void setEmail(String email) { 71 | this.email = email; 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Userinfo.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.*; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | 16 | public class Userinfo { 17 | @JSONField(serializeUsing= ToStringSerializer.class) 18 | @TableId(type = IdType.ID_WORKER) 19 | private Long userinfoid; 20 | 21 | @JSONField(serializeUsing= ToStringSerializer.class) 22 | private Long id; 23 | 24 | private String tximg; 25 | private String adress; 26 | private int age; 27 | private double vipmoney; 28 | private String rate; 29 | 30 | @TableField(exist = false) //sql查询的时候不放在条件中 31 | private String username; 32 | 33 | @TableLogic 34 | private Integer deleted; 35 | @Version 36 | private Integer version; 37 | @TableField(fill = FieldFill.INSERT) 38 | private Date createTime; 39 | @TableField(fill = FieldFill.INSERT_UPDATE) 40 | private Date updateTime; 41 | 42 | 43 | //构造类和setget方法 和tostring方法 44 | 45 | 46 | public Long getId() { 47 | return id; 48 | } 49 | 50 | public void setId(Long id) { 51 | this.id = id; 52 | } 53 | 54 | public String getTximg() { 55 | return tximg; 56 | } 57 | 58 | public void setTximg(String tximg) { 59 | this.tximg = tximg; 60 | } 61 | 62 | public String getAdress() { 63 | return adress; 64 | } 65 | 66 | public void setAdress(String adress) { 67 | this.adress = adress; 68 | } 69 | 70 | public int getAge() { 71 | return age; 72 | } 73 | 74 | public void setAge(int age) { 75 | this.age = age; 76 | } 77 | 78 | public double getVipmoney() { 79 | return vipmoney; 80 | } 81 | 82 | public void setVipmoney(double vipmoney) { 83 | this.vipmoney = vipmoney; 84 | } 85 | 86 | public String getRate() { 87 | return rate; 88 | } 89 | 90 | public void setRate(String rate) { 91 | this.rate = rate; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/entity/Userorder.java: -------------------------------------------------------------------------------- 1 | package com.ryw.entity; 2 | 3 | import com.alibaba.fastjson.annotation.JSONField; 4 | import com.alibaba.fastjson.serializer.ToStringSerializer; 5 | import com.baomidou.mybatisplus.annotation.*; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | import java.util.Date; 11 | 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class Userorder { 16 | @JSONField(serializeUsing= ToStringSerializer.class) 17 | @TableId(type = IdType.ID_WORKER) 18 | private Long orderid; 19 | 20 | @JSONField(serializeUsing= ToStringSerializer.class) 21 | private Long id; 22 | 23 | private String goodsimg; 24 | private String adress; 25 | private String username; 26 | private String email; 27 | private double goodsprice; 28 | private String size; 29 | private String goodstitle; 30 | private Integer issend; 31 | 32 | @TableLogic //逻辑删除注解 (内部进行更新) 33 | private Integer deleted; 34 | 35 | @Version //乐观锁注解 36 | private Integer version; 37 | 38 | @TableField(fill = FieldFill.INSERT) //内容自动填充(插入时自动填充时间) 39 | private Date createTime; 40 | @TableField(fill = FieldFill.INSERT_UPDATE)//内容自动填充(修改时自动填充时间) 41 | private Date updateTime; 42 | 43 | // 提那家set get方法 和构造类和 tostring 44 | 45 | public String getGoodstitle() { 46 | return goodstitle; 47 | } 48 | 49 | public void setGoodstitle(String goodstitle) { 50 | this.goodstitle = goodstitle; 51 | } 52 | 53 | public Long getOrderid() { 54 | return orderid; 55 | } 56 | 57 | public void setOrderid(Long orderid) { 58 | this.orderid = orderid; 59 | } 60 | 61 | public Long getId() { 62 | return id; 63 | } 64 | 65 | public void setId(Long id) { 66 | this.id = id; 67 | } 68 | 69 | public String getGoodsimg() { 70 | return goodsimg; 71 | } 72 | 73 | public void setGoodsimg(String goodsimg) { 74 | this.goodsimg = goodsimg; 75 | } 76 | 77 | public String getAdress() { 78 | return adress; 79 | } 80 | 81 | public void setAdress(String adress) { 82 | this.adress = adress; 83 | } 84 | 85 | public String getUsername() { 86 | return username; 87 | } 88 | 89 | public void setUsername(String username) { 90 | this.username = username; 91 | } 92 | 93 | public String getEmail() { 94 | return email; 95 | } 96 | 97 | public void setEmail(String email) { 98 | this.email = email; 99 | } 100 | 101 | public double getGoodsprice() { 102 | return goodsprice; 103 | } 104 | 105 | public void setGoodsprice(double goodsprice) { 106 | this.goodsprice = goodsprice; 107 | } 108 | 109 | public String getSize() { 110 | return size; 111 | } 112 | 113 | public void setSize(String size) { 114 | this.size = size; 115 | } 116 | 117 | @Override 118 | public String toString() { 119 | return "Userorder{" + 120 | "orderid=" + orderid + 121 | ", id=" + id + 122 | ", goodsimg='" + goodsimg + '\'' + 123 | ", adress='" + adress + '\'' + 124 | ", username='" + username + '\'' + 125 | ", email='" + email + '\'' + 126 | ", goodsprice=" + goodsprice + 127 | ", size='" + size + '\'' + 128 | ", deleted=" + deleted + 129 | ", version=" + version + 130 | ", createTime=" + createTime + 131 | ", updateTime=" + updateTime + 132 | '}'; 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/hander/MyMateObjectHander.java: -------------------------------------------------------------------------------- 1 | package com.ryw.hander; 2 | 3 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 4 | //import com.oracle.tools.packager.Log; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.apache.ibatis.reflection.MetaObject; 7 | import org.springframework.stereotype.Component; 8 | 9 | import java.util.Date; 10 | 11 | 12 | @Slf4j //打印日志 13 | @Component //把组件加入ioc容器,可以调用 14 | public class MyMateObjectHander implements MetaObjectHandler { 15 | @Override 16 | public void insertFill(MetaObject metaObject) { 17 | // Log.info("star insert fill"); 18 | this.setFieldValByName("createTime",new Date(),metaObject); 19 | this.setFieldValByName("updateTime",new Date(),metaObject); 20 | } 21 | 22 | @Override 23 | public void updateFill(MetaObject metaObject) { 24 | // Log.info("star update fill"); 25 | this.setFieldValByName("updateTime",new Date(),metaObject); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/AdminactiveMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.Adminactive; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface AdminactiveMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/GoodsMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.Goods; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | @Repository 10 | public interface GoodsMapper extends BaseMapper { 11 | int issell(Long goodsid, int deleted); 12 | List getoutgoods(); 13 | } 14 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/GoodsimgMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.Goodsimg; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface GoodsimgMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/SizerestcountMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.Sizerestcount; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface SizerestcountMapper extends BaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.User; 5 | import org.springframework.stereotype.Repository; 6 | 7 | 8 | @Repository 9 | public interface UserMapper extends BaseMapper { 10 | int changedeleteByid(Long id, int deleted); 11 | int deepDeleteByid(Long id); 12 | } 13 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/UserinfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.toolkit.Constants; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.ryw.entity.Userinfo; 8 | import org.apache.ibatis.annotations.Param; 9 | import org.apache.ibatis.annotations.Select; 10 | import org.springframework.stereotype.Repository; 11 | 12 | import java.sql.Wrapper; 13 | import java.util.List; 14 | 15 | @Repository 16 | public interface UserinfoMapper extends BaseMapper { 17 | String querySql = "SELECT a.*, b.username FROM userinfo AS a,user AS b where b.id = a.id "; 18 | String dimquerySql = "SELECT a.*, b.username FROM userinfo AS a,user AS b where b.id = a.id "; 19 | 20 | @Select(querySql) //多表的关联并且分页查询 21 | List userinfoPagelistAnduser(Page page); 22 | 23 | @Select(dimquerySql) //多表的关联并且模糊查询 24 | List userAnduserdimquery(QueryWrapper querywrapper); 25 | } 26 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/mapper/UserorderMapper.java: -------------------------------------------------------------------------------- 1 | package com.ryw.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.ryw.entity.Userorder; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface UserorderMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/util/MD5Utils.java: -------------------------------------------------------------------------------- 1 | package com.ryw.util; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | public class MD5Utils { 7 | /** 8 | * MD5加密类 9 | * 10 | * @param str 要加密的字符串 11 | * @return 加密后的字符串 12 | */ 13 | public static String code(String str) { 14 | try { 15 | MessageDigest md = MessageDigest.getInstance("MD5"); 16 | md.update(str.getBytes()); 17 | byte[] byteDigest = md.digest(); 18 | int i; 19 | StringBuffer buf = new StringBuffer(""); 20 | for (int offset = 0; offset < byteDigest.length; offset++) { 21 | i = byteDigest[offset]; 22 | if (i < 0) 23 | i += 256; 24 | if (i < 16) 25 | buf.append("0"); 26 | buf.append(Integer.toHexString(i)); 27 | } 28 | //32位加密 29 | return buf.toString(); 30 | // 16位的加密 31 | //return buf.toString().substring(8, 24); 32 | } catch (NoSuchAlgorithmException e) { 33 | e.printStackTrace(); 34 | return null; 35 | } 36 | 37 | } 38 | 39 | 40 | public static void main(String[] args) { 41 | System.out.println(code("123")); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /sever/src/main/java/com/ryw/util/makeDirectory.java: -------------------------------------------------------------------------------- 1 | package com.ryw.util; 2 | import java.io.File; 3 | 4 | public class makeDirectory { 5 | public static boolean mkDirectory(String path) { 6 | File file = null; 7 | try { 8 | file = new File(path); 9 | if (!file.exists()) { 10 | return file.mkdirs(); 11 | } 12 | else{ 13 | return false; 14 | } 15 | } catch (Exception e) { 16 | } finally { 17 | file = null; 18 | } 19 | return false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sever/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.username=root 2 | spring.datasource.password=123456 3 | spring.datasource.password1=!!_Renyiwei1323% 4 | 5 | spring.datasource.url=jdbc:mysql://localhost:3306/finallyproject? useSSL=false&useUnicode=true&characterEncoding=utf-8 6 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 7 | #port 8 | server.port: 9000 9 | 10 | # mysql-plus 11 | mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl 12 | mybatis-plus.mapper-locations=classpath:mapping/*.xml 13 | #mybatis-plus: 14 | #mapper-locations: classpath:mapper/*.xml 15 | #configuration: 16 | ##log-impl: ${MYBATIS_PLUS_LOG_IMPL:org.apache.ibatis.logging.nologging.NoLoggingImpl} 17 | #log-impl: ${MYBATIS_PLUS_LOG_IMPL:org.apache.ibatis.logging.stdout.StdOutImpl} 18 | 19 | 20 | 21 | #\u65F6\u533A 22 | jackson: 23 | date-format: yyyy-MM-dd HH:mm:ss 24 | time-zone: GMT+8 25 | 26 | #\u903B\u8F91\u5220\u9664 27 | mybatis-plus.global-config.db-config.logic-delete-value=1 28 | mybatis-plus.global-config.db-config.logic-not-delete-value=0 29 | 30 | ##QQ smtp.qq.com 31 | ##sina smtp.sina.cn 32 | ##aliyun smtp.aliyun.com 33 | ##163 smtp.163.com 34 | spring.mail.host= 35 | spring.mail.username= 36 | spring.mail.password= 37 | ##\u7F16\u7801 38 | spring.mail.default-encoding=UTF-8 39 | ##\u53D1\u9001\u90AE\u4EF6\u5730\u5740 40 | mail.fromMail.sender= 41 | ##\u63A5\u6536\u90AE\u4EF6\u5730\u5740 42 | mail.fromMail.receiver= 43 | 44 | 45 | -------------------------------------------------------------------------------- /sever/src/main/resources/mapping/GoodsMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | UPDATE goods SET deleted = #{deleted} WHERE goodsid = #{goodsid} 9 | 10 | 13 | -------------------------------------------------------------------------------- /sever/src/main/resources/mapping/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | UPDATE user SET deleted = #{deleted} WHERE id = #{id} 9 | 10 | 11 | 12 | DELETE FROM user WHERE id = #{id} 13 | 14 | -------------------------------------------------------------------------------- /图片/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/.DS_Store -------------------------------------------------------------------------------- /图片/yg系统框架图.drawio: -------------------------------------------------------------------------------- 1 | 5Zxrj+ooGIB/DR/nxEqh8LH1ck5y9iS7O8nevjXKandVTK0zur9+oaX2RsfLMKU6ickAUtq+vA/vBRwAR+vD1zjcLn/wOVuB4WB+AHAMhkOHuEj8kS3HrAXnDYs4mqtORcNz9B9TjQPVuo/mbFfpmHC+SqJttXHGNxs2SyptYRzz12q3v/mqetdtuGCNhudZuGq2/h7Nk2XWSoZe0f6NRYtlfmcH0+ybdZh3Vm+yW4Zz/lpqghMARzHnSVZaH0ZsJYWXyyW7btry7enBYrZJLrlg8stv4+/fvlPv1x9fp9s1/Cs+4ic1yku42qsXBhMCfAf4UBYCF/hjMPFAMAbUkQU/AFS94S455lKK+X4zZ/JGAwCD12WUsOdtOJPfvgq9EG3LZL0SNUcU1S1ZnLBD67s4JwkJ1WJ8zZL4KLqoC4ZQCVVplauqr8UUwbzLsjQ9SLWFSisWp5ELwYmCkt01chw0BVkXklCArSzO9vHqGMTh7F+WnJdWIdqsloRJxDeiSgdmZAnx8AuqSPOJwi8eakgUkVNrWabuoGg3L9ehRkER8CfAFwUMiNBRT+mlP7Wul15VLR2NXp50tRu9hBr5YUBHgIylIIkvYe+N/FzaOwF6DaGwubAQqsrjZMkXfBOuJkVrUBVb0ecnzrdKWP+wJDkqcxfuE14VJTtEyR/yckFmVvtTDSbL40O5clSV7Dnlw10r/JitxKLyUr1OJ0l16c88EiOWJq26fJwmKB9ix/fxjKmryhbq2oGSMF6wpDFQOrGn97l9rl33/CLONnNfuhWituEb1rZWv29CyovuG8r+znkTi+vAzMRBdGaglokTkgyPpW5b2WHX/sQO1t+n0INsRLNagYxqhR5txwja4pnSGTtrUG2pHHRqE0hu1DiHmtY444uJ96kWE68FzeuNwLmBPtoIELO4b8TjlHiX1RPwslIQn9auRz6Tx1kf0JZi4Dry8EbFwHUjU187DBmZxgNXjczFL/ixRol+qtXFRbQWo95sOTRDdbzC5DKpxGReGtOmoZgwbQTL4Iw6gBIZrvmjNNwVse4UkAmYUNkzQLJAx/Ir63Gb28JmST10YVtjFo3FbUiTODDutZkJyC7w2pDVJRy1ze617KFzAYd1rw3p8iVZHjRFkkzTfJMrSZS0YkAcmTjR8CuwTTOpEuQxoM08QteQokHvIDUbcNuGFNuEtOGG3AwpuQ1SYwhirXmkruSpSPkKBAVeflrw5edOoayHO/ah/FyBKzZl3BoDdc2NJiSQe3nZVgmSCX+K7oIJXHcTrDORQ/pZmKhn125m4sY0nSkmsH5/W7pz6a4hEZEUvQ8mvN4x8VARFrYaYXmmjNDZNKyhJFnjPriDpBfWBWdvJk4EuD6SLcIzFOX+Yd068faw1rnfb6SgeifS/jkPZh3qth2FYg/hw3cUsNVI95yffelaOaw7J7Rj50Sz0yS5EssWLgCzjVP//A6zWx99wInYxOmci37xIZA6lx3jlCtq7ahg4KeWnwIK8yxRAEiQHmoN0lNwvdtNaZzLsc6cp4mj7pu5TFtsMeeYsmHQsg3zNEGg9MSphEsCRVU4HcA0fYtklYx66DY6vTN0nibcuXPohlahM2XpGrvdXUOn2TaTHKE8/IVyA0SyRtIWYemclMfeQde/YM0zfNqzB9C5NqEzFq3VfxrQOXS6vEgTOiyzIzT/FZWydOkPLvrnZ/YvtvMeLlXiWU2VGAvuUP3wZdf06XIlTfqI3Pb3U4eTiBZ0F+EeHHpthxvtgfhwSRbPapIF5sfK3wti45hPxyDmGldSjJdomzqb6UcWBiDoY4T3BPtm7sjDpVWI1bTKU8vR/eu3BixHeKQlrXLDGbj+Ydh2uMQehg+XaCFWEy1P9bjiVgyd+lHUrjHUJVqaGF5yPrx/GDZy0PY5fLjcC7GaezH3A2+n7joZA1FUi3+Bk3Uv/pEQnPwP -------------------------------------------------------------------------------- /图片/修改密码时序图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/刷新缓存路径时序图.drawio: -------------------------------------------------------------------------------- 1 | 5Vnbcps6FP0aPSbDTSAewSbpZE6mnaRN2r6ckUGxNcGIATm28/VHAmFzc4xTfNJpnyJtXTZee+2tJQWYk+XmOsPp4pZFJAaGFm2AOQWGoWs6En+kZVtabAuWhnlGIzVpb7inr6RaqawrGpG8MZEzFnOaNo0hSxIS8oYNZxlbN6c9sbjpNcVz0jHchzjuWh9pxBfKqmvafuATofOFco2gGpjh8HmesVWi/CUsIeXIElfbqKn5AkdsXTOZATAnGWO8bC03ExJLWCvEynVXB0Z3n5yRhA9ZsHh89e/v8hxe3V9s4AP6d313c6E75TYvOF4pLEDgAk8HPpQNdwo8Q30/31ZwiZ+SyuZqGf9Dn0hMxY82/ZRkdEk4ycRIrMxf9jZ/vaCc3Kc4lEvXgkjCtuDLWPR00RSx5VgsyXb9OMZpTmeFV01YMhKuspy+kDuSlxSSVrbi0tNkRw1p7IKj8HohGSebmkmBdU2Y+M5sK6aoUWiqwClOu4rS6xpBKn4satywbWXEipTz3db76IiGCtAJwbLsbrDaoakBmjKa8OIboA/gtBUhlvEFm7MEx/UYdXF7mzaD0awKggIT9oHZxdKA58KyysoG8R3gWsBDILABQsB3hhIfZ5yGNMUFZmLMCznLPi4jZFSoKG5eTOeJsHEmN86FH5rMv8rO1LTPmDlWK3OQ1gm20RNsxzpbsM3fJXF2tBtehhpQOgPzpkq38aE0OlDmJM8pS3LB+e3feVTY7vGjoo/xtnO2o6LnXP8gxhunogmblEfDKK+jc2Fpwp6jAgEvAP5VoZEc2X4D3XY9njHO2VIMkCTypHqVtpiFz5K4UkuS6Bg3SdQQtAexvNAuNdcxG4BW6GUkxlykSFNN96Cndv8iSVI/0Zuk191WAHK2ykKiVtWFaWsjiI5sxHE2J7yzkYAOb2vTFInfcqU3HBktP+zpKScNFwVfdqi+n0LwtANoCGFYSsSQH+F8UdBFL4fV3Qp1qEQ2lH+X7Uuoej+Knmuo7nRTmznd1jq1rC9tiUDj+86n6KitdKsy7Dcrett6r73dQZKXBBogiFvZIC6PBWOOKoKDaSOyBja5stMQI2eNqQ0j+9GssVDryB+afq2fcL4ksPvrqCiiQnUHELg+cIPCIgrqlbT4AUDW/50ov0BHZyD7quvTKVXc0K1RCOjoTd7Y0Hhn2W6JHtg+gE8u2wc+2GhljNV45xCNcsfW6lH5/KLH9Da/wS9+YkHn0ZpFX/WLrhLuULVGwzDGQiaHTSE7GvP6C2GXUDURBXtEFBxHGthaM2Sdk3Yoxxx4ZKOROGab/X56OTYWf6zecihlpVYUvykQ94jj5VCoat5kVc4z9ixuObF8hJgWT5Km/0TjuGXCqmqGgm+FpG+X0yWNIumm9z42kLsn3KLMAzqwRlrUQ1pzBOG/1J8D+wFubu4slCDtFfGHaV+CyyjoRVxEUCzge7LhT4BryiFPhAz1hEw+LHlFAwJkA3FSy8ki0O6fG03L6S/b9WjaZ4pmvrz9/O3zp9z7ia+/pcGPZLaeXei90Szf+QIbuLbMuzPe4joi9T2F/ohulULBdEap4VbrGm441uU7FWZbqhoO+sUq3nU16nHfy5++aoBkmvt+QaQrSaGz8Ke6uumNixu0rZNvbiMysZIcR8VuqYo/4oWirVCN975QtCVoZ6Pf+YVCdPf/ZCyn7/+Jawb/AQ== -------------------------------------------------------------------------------- /图片/搜索商品时序图.drawio: -------------------------------------------------------------------------------- 1 | 5VnbbuM2EP0aPmahG3V5lHzZIugCi3iRtE8FI9EWEVoUKPqWry8pUbZuduTU3i3ap5BnKFKeOTNzqAB7st5/5ShPv7EEU2AZyR7YU2BZlmn68o9CDhXiOrACVpwkFWSegAV5xxo0NLohCS5aCwVjVJC8DcYsy3AsWhjinO3ay5aMtk/N0Qr3gEWMaB99IYlINWoaxsnwGyarVB/tQ214RfHbirNNps/LWIYryxrV2+ilRYoStmtA9gzYE86YqEbr/QRT5dbaY9Vz8zPW4ytznIkxD6Qv79HiqSjgfPGwh8/+X7unxwfTq7bZIrrRvgAzFwQGCCZg5oHIAaFEAhCaIIJqEEwVUv0icagdKH9croabNf2dLDEl0g12lGNO1lhgLi1Uw99PWLRLicCLHMXq0Z2klsRSsaZyZsqhjLZA8hF+nFOK8oK8lqcaEuE43vCCbPETLipSKZRthDppciSLAvvu0h7cYi7wvgFp933FTL4nP8gl2hroSGqSW5rjuwZjasKkDbK4rgaRZunquPMpXHKgI3ZF9By3H71uZBr+zBnJRPkOMAJw2gkQ4yJlK5Yh2gxR322XeTTamXWF0M6EQ87s+9KC9/JlnaatTPBAIBPAVynh+yDyxvIecUFikqPSZ9IWxoLxX5cQKipEVruQklUmMcHUxoU8h2SrH2oytd07Js6D2c6cetoItjUQbM+5W7Dtf0viHGk32pntvPFG5k2dbrd3pTWQNxAEEPhuObCBb5Y9BYLIKDNJdpCZMkWhsv4vW8mxjl3oJUMp4Xp36yUDSuAXpYR1rTdhOyf8cTlh+vfypQ0HckL2j5niuyS+fMEQDmUJVMpL5odsPKFXposDorkSXypvTBDOL8WkW+ZfmRBsLQ04S0KlkhVGWfym6K40K04+YjROWsL5fIU3vhiBZw9WeY4pEjKx2qp9wOd69++KWqetu73D6kStYBseY/1QU/9293E+2EggvsKit5H0HDo0lmnmXzyqndudc9hyWeDWESXJjk79PO/gdW1tDF9YjqUpSlCRlmwxK7O+wvk9JuE9EX+o8ReoZ3+WM1fPpvvGwumhMWlUisucrAI+QhaPJa/kLmyH7CgQbstdyx5HuQ+565iddj46CX4WFd0zJXCuFLWqcxEIZmWdm6qxvFjKauwHdQmcDVTHn8zkf8A/3Uqr6F5YWN+arqmykgs3oabltSkFfeuTlOpIGWjevq7elK9bk5JvxSPaRpkDvRfnNflhPgyo2C7fGlyKKSoKErc15s3oM7Z8NfQNHNA38Eb91+30ze4VfCxR7G4n7250NVHOvHAwfM6JMdWON+WPM1DuXPXpQGk3KeVkBQvLW9C8lH6+knKhdaYAXq57UhSLNvMKwdmbvKRQ9ZFhWn6DtKMlobQDIV0eY8nJUpF36+aaJIk6ZvA6NZLf42V7L1BW/7uAP0Dsbhf9jG5fm28z9xnuH58cP/ONd188T4eKgLqmmioiKlKOurKODGsUlWLfVW0umPx3g9hRJpbRj6F7mxjK6elreZW3p/9G2LO/AQ== -------------------------------------------------------------------------------- /图片/用例图/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/用例图/.DS_Store -------------------------------------------------------------------------------- /图片/用例图/日志.drawio: -------------------------------------------------------------------------------- 1 | 7Vhbb9sgFP41PM4yxhf8aOeySbuoUndpnyYW0wTJMZlNmqS/fmCD7226tFk2aX5IOIfDsfn4zmcwQJP1/m1ONquPPKEpcOxkD9AUOA50PCz/lOdQeQIXVo5lzhId1Diu2QPVTlt7tyyhRSdQcJ4Ktuk6FzzL6EJ0fCTP+a4bdsfT7l03ZEkHjusFSYfebywRq8qLnaDxv6NsuTJ3hn5Y9ayJCdYzKVYk4buWC80AmuSci6q13k9oqsAzuFTj5o/01g+W00w8Z8DXdxS77x9o/Pn2e7j7Ek0PaP4GVVnuSbrVEwazAIQhiGMwC1UD+8oTo9ITqN9wrickDgYleSe5INKIdysm6PWGLFTPTnJC+lZinUoLyubwofU87mku6L7l0pN4S/maivwgQ0wv1oBqRqFA27tmfaDtVb5Va21MHNGUWNapG9RkQwP3GyD6QxAdn6zV1FNRTrptsWyRbhNaO5edEG318G0hqIBikp9RypaZ9P3gQvC17KBZEinCSx/fUNkVJ6RY0USPk926urC0cr7NkrLPLvskDDfKsDxj3tbjpDHdtyOnB209upoF3+YLepx3guRLKp6I02VGk06VPsoN23Id7HboAfWtcpoSwe67ZT1GBZ38ijM5qTqzaxhV61iPTdWU9ah2GfYSIdhLZPcSVZg8kcgE8ru7gnZiSvbWqJxO6GBEFTCIIxBJDXCVBsRTJQ9RBPBEdUVzgM3SX0YV6urWsDreUBVMSFsUvHOJgueOSms0AxEsNdYupdUDIQQhHmAn3xYb1dyu02gheN6q/A/kB02veMEE4x0F6EuD4GfAuSe+9hBmPAIzRGcT35FX2ICIA2mUnjlLDS6NNkKni1hPJ/dM3Jgxsn3bajcSqYxDy7iiOZNzpfmLVdNw6qhsomfKZvuV6dtnEUoPnyiUnn8k0SNC+Voi6OPLEsu2UO/6G5nmu5ejGnK6DPGdE6nm4iOJzky1YORd8Y/tIH9bGU/npv/aKvhCGgZhlz3o1K0hhAhbbtDLBl0Lhs2Fn8VMuY7k0ArbqIDiHNyFZgfwR3SyOagElR6ao4pthR4+clwprb5GFhJBYR4u4xl9FW5eQg4d27eQ68PQ9fwQuhh1D0JO6Epy4QBjHAQOkhEnsjSEFrJbjOzy1QmwhRy7ubw/+9Ye23b76ptF5JXb7gnA8VMbcRUclMEeiOeqfdGPHd7xY01dga99rsk/kT25mhff7ftv1z8fZnufx2/gEN8nql0X1F9T7aPVObpGz9z5/K/sl1e2NJvPoFV48zEZzX4B -------------------------------------------------------------------------------- /图片/用例图/用户下单购物用例图.drawio: -------------------------------------------------------------------------------- 1 | 3VnbbuMqFP0aHsfCBmN4tHOZkeYcqVLPrU8jT0wTS06IHNIk8/UHYpwY7DZuc9O0D63ZbHBZrL02bAM0mG+/luly9qfIeAECmG0BGoIg8IOQqj/asqssEfYrw7TMM+N0NDzmv7gxQmNd5xlfWY5SiELmS9s4EYsFn0jLlpal2Nhuz6Kw37pMp7xleJykRdv6b57JWWWlQXS0f+P5dFa/2Ses6pmntbNZyWqWZmLTMKERQINSCFk9zbcDXmjwalyqceNXeg//WMkXss+Af75xir//4slfTz/Y5u94uEPjL2aWl7RYmwWDUQQYBjEFIwIoBYlZ6UruakzUSpb6cT0v4okUJUDJCy9lrlD7I/3JiwexymUuFsrlp5BSzBsOcZFPdYcUS2WdyXmhGr56FGtZ5As+OOwjVMb2Gut/WE3Htw2TWfNXLuZcljvlYnqxgd/wL6zbm+NuMmOaNTey3rbUEGh6mPmIsXowML8DctQNOQNJAkZMP1CiLQnaWyL9m41bm6DepGJANZLNLJf8cZlOdM9GhaEN7CUwDG0Qsd8G0YdhG8XoWiCSNogBSed66YXcL7rZyheTYp3xg3FquZiWg28DQZe7B1LzRRZrjVE2seSqK8nS1YxnZpzqNoJGVasU60W274P7PgXDfwdH1Xhq9gy3Vmt3Kh5WYl1O+GnWybSccvmGn4l2nlmy+CozoIcDii1y+OZVJS9Smb/YOtpFBDP5g8jVohpxG1rTRtjhUrVkM6qpe85EyHcmgs5EFSZvTFQ7iufnFbd89tw9oPJxOkcdmqCkNwaxUgCsFSAZanGIY0AHuiseA1pv/X00AQWOJoRtTYg6hDW8liT49HNqgn9CE/g2l4dB6vmpYT8O0Y0LqAjrKSOop4ycKRLESUzEZVdfkQgR9rCtY4wSLwh7SYXa8HTXcFtqh9U1hMJnvz3JDV2hFxHUoOwX6EH8Jm1144GXucKQl27IwGbIQA+Fp6JGt9zZzggM0jcw+ibYMyODUSfroQ9GBmXMq1lXRxkNvH6BcSna17nmM9CeoSbtoRe8m/Rn0BT3pSm5EU0Z9OqDTM1UGrns6q3izCY9c0l/bZoG76Ip30pFmXextM3AI+n8wCVkg9OXOGnc4tzQVx6bN09idvlMLkbYYc9HDxMU3ZeGdZRb1wkCkhDQ8f7yEOnCjr5gYBAPdYmBqqsFa5PthtcJnzp1mqhfneZq14l6D61Y7hON47wogJsQ9rH5ejh2HeE95PyccTjyIEXOASm68QmpLt6eVAB8PwUInZqDf5j4vRJAyKmZrq0BHRWyEQMqylSs68puoiN+pCQh1CVeXWQYAoa0RSVRXYEMdVPl5k6fBOrqhFKOGN69EIEc5SBt5aA3VY6uag7RSMW+VcTR8hsd5VcDHewL72qfIq3V94QVE7dwHrZg7arvuGW6y8HacfWtamNs/60iHoBkdFfIQqckRjrK5F2QXe1TA/5E1ybk19WB0wWuE8kwslMhwzeuFUR9U2HPTHhm1vMhbF/Cgg9fwphTbyf0UplPNY+fSyv340dnNPof -------------------------------------------------------------------------------- /图片/用例图/用户修改信息用例图.drawio: -------------------------------------------------------------------------------- 1 | 3Vpbb6M4FP41ftwI21zsR8hlRtpdqVJ3Ln0aMcFNkEgcEadJ5tevDSZgQxOaScrMVFFrHx9M/PH5O+fgAjxeHT7k8Wb5L09YBpCTHACeAIQg8oj8oyzH0hK4sDQs8jTRTrXhMf3BtNHR1l2asK3hKDjPRLoxjXO+XrO5MGxxnvO96fbMM/Oum3jBWobHeZy1rV/SRCxLK0FBbf/I0sWyujP0aTmyiitnvZLtMk74vmHCU4DHOeeibK0OY5Yp8Cpcyutmr4yevljO1qLPBZ8/MuL+/YNF/z19o/tP4eSIZ3/pWV7ibKcXDKYBoC4ICZj6gBAQ6ZVuxbHCRK5ko5q7VRbOBc8Bjl5YLlKJ2j/xd5Y98G0qUr6WLt+5EHzVcAizdKEGBN9I61KsMtmBssl3IkvXbHx6jo40ttdYfWE5HTs0THrNHxhfMZEfpYse9TX8mn9+1d/XT7MyLRsPsrLFmj+L08Q1xLKhUX4D4rgbcQqiCEypahBfWSJcWAL1m85az0DeSW4B2Yn2y1Swx008VyN7uQtNXG8AIcbByDNQ9FAbReh4bRiDe8Hot2FEfrxSi89EsexmL13Ps13CTsaF4aJ7FsINDG3ynljN1kmoREba+IbJoSiJt0uW6OvksFY0Ins5362TYswpxiQMX1VHYqu7T82xycHoHS9tiS3f5XN2mXkizhdMnPHTG54lhjK+yg5n5CLiGvSA+lY5y2KRvphS2kUFPfkDT+WiTjO7jsm6wLXYVC5ZX9WUPmsiDK2JHGuiEpMzE1WO/Pl5ywyfgr0nVK4ndNChC1J9QxBKFXCVCkQTJRBhCMhYDYUzQKpHP4wuIMfSVq+tCkGHtnr3EgVI/hhVgE1NgBc0gR1ScbpItp8a9voS1bmBitCeMoJ7yshPioTvmXub4CtFwsPuyDV1jBJ/hLxeUiEfeHxsuG2Uw/YeQoE6MogzJGcHIQn3Jo63+VtTFiKbzo0d0YfLjXB3gc1Og81waDZXzLhI52ZGVCWRP0lxalGc2llVX4oT15wIOqhfILwVdyu4jShXBDda1BvhGETTQWMaxlZMC/rFNBvIm8U0t6NE+81iWrWfR9THzQg1Cryz21p1HlieSiBZ3k6bkYtNYXH8S8qievaM14uH+4uFQkqcUZUSVpkuuVYqqJUyYzTqFwlvpRUu+lOI30zLzgeymt3vUxJ68BdjMG0xmKDAJl5fDlO7frQ3w70Z7HZEOw+Q4qMaDoiKUi5yQThR73qIrO+oqvJIAOiwxR0kFnidr3w6IqFdpN8uEnodgtAndZ2lWQWMlci+nrt2VVQjbP28OXpdv1P7btQh81RI7fTy2kTV962i7r13bsfbmHtTTRdGvcr3gbhFB+QWvFGZjyxdg9B+1X9vbr1SA81AOFU1EJVtWliIetmnGqH6aB9YnMtA9fpvyPBgHat4sB0dyHsGB6+jTNKHJ1TFWgkgDYoDFlyAWb4/dYswTNSRy6CxFlnHKz2Lzvuh2ZV730v/6orOR9Ss6OjFd0VdFd3vo6gVawdRVDvG2jrY+3QFXZjoakGV3fp8vHSv/8sAT/8H -------------------------------------------------------------------------------- /图片/用例图/用户的用例图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/用例图/登陆注册修改密码.drawio: -------------------------------------------------------------------------------- 1 | 1Vpbj5s4FP41ftyIq20eIZdW2q000rS7naeKBk+CROKIOJOkv752sAGDUxh2yGTmIWMf24f483duJsCdbk6f8ni3/kITkgHHSk7AnQHHsR0f839Cci4kyLMLwSpPEzmpEjymv4gUWlJ6SBOy1yYySjOW7nThkm63ZMk0WZzn9KhPe6aZ/tRdvCItweMyztrS/9KErQspdlAl/0zS1Vo92YZBMbKJ1WS5k/06TuixJnLnwJ3mlLKitTlNSSbAU7gU6xZXRssvlpMt67Pg388Ee3//ItHXpx/B8Vs4O7uLv6SWlzg7yA2DOQKBB0IM5hBgDCK50z07K0z4Tnaiedhk4ZLRHLjRC8lZylH7J/5Jsge6T1lKt3zKT8oY3dQmhFm6EgOM7rh0zTYZ79i8SQ8sS7dkWp6jxYXtPaovzNWRU00k9/yJ0A1h+ZlPkaMl/pKAUPWP1XF6UrSunSSUslgSaFVqrjDmDQnzKyB3zZAHIIrAPBANDIUkci8SJD6DResQ+JO4DfBOdFynjDzu4qUYOXIz1IF9AwxdF018DUXfgKJt+W0Y0Vgw+m0YWxBtk1C4AN6jO8JZF3HJIs0UMrwnHY7t6Jjl9LBNSCJZSE4p+67W8PaTkE/cxp8cnJ1qq2bnWueB5CnfO8mVbMtx+F7o8pESFMoDzgEpqBReeud6r6ny6lnv6SFfkm5HwOJ8RVg3e0miuc02c+q8UKaUkyxm6YvuWU3EkOoeaMq3UbLQt3QO4qaJFpuUq+qesKEIwg5FBQotRReelnscTl1ooC6MN8JuM3Y5xXov3S6zQ0JK4UqbInsN5teo3HS8pUduW0cS79cX0uvGgdsGUTHX13jbwdnh9HR70hP1pKdkgjXxHOxpZLDdNyGr1yAr8gaS1bUbiqx+ZK0UqYn0+XlPRiE0MoQ0njmEIOQBzBMBLJqJ2BaGAE/FULgAWB39O4U0X4cVOn4roCFDWuCPFc/wq5wCOTFuoK/yCcZoWI9/mvlfD4bK9m09Yvkdtq+CqGrXVl2NmsP9RXD/4Qz6HYb9UcJZYLB+KNJXUUP4IpsVRn9XCa2H9aLAC9rp7E2t3zZUBR8sJ1D2PUFIT5QD+OfUuJYGIz2dmFjOkCzYlGyP70qcvrnH//Qb2LMmKngq14HK+uy1zgOhRhxsFmwjOw/bVMd9SOLrpP9zYLsSREdLn3tzGN6Gw8hpxD48NPbhDkUj09cxXKB9TPpWlH2qkbnLZdfpa49GX7dv+Xcr/gZBywfjoQUeDBoUDvpRmB94fK5N24kJ+1FIbriwEIndAgS2KOu4zeGi4YBwLjI8/hnZhopPDFnvXfp5zdLPkPwFhqvM0W6EHVP9DAVSoQ5i5IEQSugjdLf4ek7zttiAML5leu06Bjc91m2x0Tn2L5Df+JZ5uNftfSX8jkU0atyO2c7QKhqjLk0jpxKu6cWQB6LFxadC8VIuCoTxC1OH92HqZZGsXCl+Z0P3PQOIl3gUXrwjd0T44kF55ApwC7tR3my+Bc6+jrNvt3F2b/kSE5ruK+7MoQ73fIpF93x92HzB4A8toXzYoWiw3+Pd6ucNxfTqRyLu/Dc= -------------------------------------------------------------------------------- /图片/用例图/管理员.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/用例图/管理员操作货物订单.drawio: -------------------------------------------------------------------------------- 1 | 5Vvfc6MqFP5reNwMCCo+mjbZndm9M53p/bF9uuNGmjhjYsaYJtm//oJCIkhqmsaY9vahhQOifH7n43CkAN/Nt1/zaDn7I4tZChwYbwG+B46DHJfyP8Kyqyw+QZVhmiex7HQwPCa/mTRCaV0nMVtpHYssS4tkqRsn2WLBJoVmi/I82+jdnrNUv+symrKG4XESpU3rP0lczCordfyD/RtLpjN1Z+QFVcs8Up3lTFazKM42NRMeAXyXZ1lRlebbO5YK8BQu1XXjI637B8vZojjlgr+/MUq+/2bDP5/+DTZ/hfc7PP6Cq1FeonQtJwxGPggCMByCUSAK1BOWIS4tvvgdjOWEip1Cid+JvxBeGW5mScEel9FEtGw4J7htVsxTXkO82HxoOY8XlhdsWzPJSXxl2ZwV+Y53ka0YSkAlo4iqbw7vB0G3ss1q78aX/SJJiel+6ANqvCCBewOIXhNEx4vmYuppUU66XksWk3Qds71xqnWRNQPfGoICqITzM0yT6YLbfmVFkc15A1vEoSA8t2VLxpuGcbSasVhex5uld1Fey7P1Ii7bYNnGYfgpKgNXVZ/qbfdbrbaTtaNvc5Wt8wlr510R5VNWvNJPuhmLNS89yg04IA4lGj2QvFXO0qhIXnS3tlFBDv6QJXxS+5GJYtRexww2VVOWV9Xd0BgII2MgaAxUYfLKQKpj9vy8Ylqfkr17VM4ntG9RBQqGIQi5BhChAcN7IQ9hCOidaArHgKpX348qEE+HleCmKigBqIuC25UouMQqreEIhKjUWFhKqwsCBALawI6vFktRXM/TcFJkec3zf0S/WPqQrZIiyTQFMKWhyC6Ps6OLL7aIL7XAjHBn4mtZwhpEbEgjt4yTVOFy0Ebk6IgZOrlNip/qGl5+qpUPEikqu1rlgeUJnyvL362ailOtsolPlM36kunBToTSpWcKpeu1DHREKC8lgur27Q7sqgIWKnhb0RKiOopO0HTYwOKwXmf+GlzRX/dxjRbVHIKcI3GN8nPZU3o6vEVPVyztw9WPUeutnk6MgYi5KHfs6SouuOYSAgeB69XJNXAofjPBaoE7JFQnuROQNpqL2uU4q6jYHtSfGtV3wFnsGKS9VBy/j4yuRVrUB2k9jGuk/cJph/zXWXtka4lOkOA+qEk/IzXNxbxravYQksOBr6kpdN8jphjqeZBBQG9VS71PQFjHNwY6MSdyMcJaQv0PlsGzRqwte9Ma3ytZV3wvdf1Wo4dT97bvDW7JkYTSW8mNEKUDYjCcQDJAweGHXpfvloy1yOtRQEMw8kDggSG0bG373MhifCTeaknwmZp0sY2sb8uSchDHIkUgQOTlQCQB6KhEk1vuAA1uDVaD5vvsXV/5ARWBabB6Io0SujLVHDo3BqJjgmjJitpA7Iyb1LI5sOSuaGkp0aT3AtDbyl0RxUUzjq3HMo4FVzNTeDlcHUug0HnyagCxp4ejGOFzVucPlNdSDO4jrjXWanxuWOsZ+zByYgab0yfa1botRYfV8ed1XP0+yIevPhcODLlCWn9eqJ7gojEHtW0KP2iMLYPj/WbTd4KzkiBt39cv63vKpW4mwjb8DJ2bP0YQ4YGPfOL71PV4oO7o/kvRAFIPUf7aMJdS951OeOloXB1YuPKiQhCqc5Fj5J+1qFyBkIoYvXzPdFs+Tpz8PdPMyqHrJjmoLcnReVbu9EDjGjzqMai4GI882O+HB2o77vY/45HzGXhkDISvnHRVot6y0W/sUXvdkWJ7pN220e/slFlg2+hzpDhqUB7gDcmNgeiaIJ6YcuoORMuu3pIb4YWxOK0njkISEPq9gmjuLR0FastBvO5AtJzrkTnlYenXIzC0HZfqE0REjAQTaTLxqjllBC2ieIW9gK9//xGHU271g6fi2U2svefuWBuZIXOgs9deXj38S0nV/fCPOXj0Hw== -------------------------------------------------------------------------------- /图片/用例图/管理员管理用户用例图.drawio: -------------------------------------------------------------------------------- 1 | 3Vpbc9soFP41eowGhC7wKN/amc1uM5PttnnqqBaxNSsbj4xju79+QUIXkJw4jmW768k4cDgg8enj43BkCw0Xu09ZtJr/yWKaWg6IdxYaWY4DHQ+Lf9KyLyyBCwvDLEti5VQbHpNfVBmBsm6SmK41R85YypOVbpyy5ZJOuWaLsoxtdbdnlupXXUUz2jI8TqO0bf2WxHxeWLET1PbPNJnNyytDnxQti6h0VjNZz6OYbRsmNLbQMGOMF6XFbkhTCV6JS9FvcqC1urGMLvkxHf75TLH7xy86+PvpB9l+DUd7NLlDxSgvUbpRE7bGgUWINRhYYyIL2JeWAcotgfwmEzUhvi9RElcSD0RUBtt5wunjKprKlq3ghLDN+SIVNSiK7ZtW83ihGae7hklN4hNlC8qzvXBRrQ5RgCpGub6qb+vnA4FX2OaNZxMov0hRYlYNXaMmCgq4d4Dot0F0/Gghp57yfNLNWrKcppuYVsaZ5qJqBr4NBCVQieBnmCazpbD9ZJyzhWigyziUhBc2tqKiaRBH6zmNVT/RrFYXFrWMbZZx3gbyNgHDd1mxSQBLw1NuQH5ZH+2a7qN9s/ZAs0SASTNlPPic12yTTenbjORRNqP8FT+1AGmsrd+DrAG262BXIw5Ul8poGvHkRV/wXSRRgz+wREyqGtktuVYpnMGzYsqqV3OBGgMhaAwEjIEKTF4ZqHRkz89rqvnkvK5QOZ3qQYdeYGsQWqFQB1eqw2AkhSMMLTyUTeHEwuWjv45eQGzoBWnrRSkNTbnw+pILz+0U3XBshTBXX5CLrmcRaBHcwk7sIytZ3CzScMpZ1tCE++gnTR/YOuEJ07TBFA3Ozo+zIcvIbcOMO2CGqDdZ7tjcWkRsiaawTJK0xKVWTejoiBkKukv497KPKD81yrVuysq+UTmfapacelM20ZGy2dxMyw32zELp4ROF0vPfGOiAUJ5LBDHuWMBC/CZyDY99i4gyyVeya4VYWkSPQZD7YCmNshDKP9UL5j5QiuVVIyvXWMIdkRV27EuGVpgcpZVtqMW3sOQyiie55aaC2AraEmqnI4h1OuTSpPrZkCa/fxT7fg2u4l4t5n0j4D1dpUvhOJtKf1CRA2wIqX+iIouY18aQ1B9t2ABB28eg+hj3eUCtBQ2ifcNtJR3Wfeg56Yhq+w4UgJDRmqbgdZpeJ1QotfcasUKgExOdeqbyjTMVIseFCofJ130dx+u+4ZqpxYjn5W1HHPJ7SjY4WrI/IL7kxsX3ZI5jzwbArbQ30Ib1HWijWnuBc2PiC8s7uqz6Cryb+msT17+gBh/NxSqReZUDmyFqnnlUP5qhhpx78LIHNgiukArQd/irqxoE/v+ASYE5kJml651JHcm7/plEMNLUyofo3WrVSPIjgJsHnjtgA4dcNs3/Dt4em+m/Zd5icyAzY9I7b702b4/KWbUSKddMm5gpRNfryOV35KfMc+3ZsiaVqmq4ehK8EKg3qKF7+7ia71RBG1fSkY3qEdeuN02+zPeRYZ7CE+A5HbheE0XPMZJ6Ha9A+nrTNElm91+W//L5t5f7TfBlSId/fb2DbQz73qugtk8h43P6piX3KH3XArZb7IKnbVrGdtJ3LgVfbM+C0FjLJ7+P9jybQAcF4oQJPA+bQbwrmokfCA/fQaBMRnx4QxPV+kcxhXv90yI0/g8= -------------------------------------------------------------------------------- /图片/用户修改个人信息时序图.drawio: -------------------------------------------------------------------------------- 1 | 5Vlbb6M4FP41fuyIm4E8QpPOqtqRRs2o3XlaueAEqwYj49z669cGk3BLQrLJzq5WqlT78w3O+b5zjgmwH9PtV47y5BuLMQWWEW+BPQWWZZmmL/8pZFchrgMrYMlJXEHmAZiTT6xBQ6MrEuOiNVEwRgXJ22DEsgxHooUhztmmPW3BaPvUHC1xD5hHiPbRNxKLRKOmYRwGfsNkmeijfagH3lH0seRslenzMpbhaiRF9TZ6apGgmG0akD0D9iNnTFStdPuIqTJrbbFq3dOR0f0jc5yJMQuSt89w/lIU8Gn+sIWv/p+bl+cH06u2WSO60rYAMweETyCYgZkLJrI9KREfBEHZCNSfnmOqOb4Jgicwm6huCFVjMgWBpd9a7GojSwPkqrlK6e9kgSmRprLDHHOSYoG5HKEa/n7Awk1CBJ7nKFJLN5J+EktESmXPlE3JCIHkEr7vU4rygryXpxoS4Tha8YKs8QsuKuIplK2EOulxTygF9k2qrbzGXOBtA9Im/oqZfE6+k1P06ER7WwvB0jrYNFhVkyppEMp1NYg0k5f7nQ8ulQ3t1Qs87Lh9D3c907BnzkgmymeAIYDTjoMYFwlbsgzRpov6ZjvNtdHGrKOINiYcMmbflha8ly1rKbfU4imRBH6pBB+E3ljeIy5IRHJU2kyOBZFg/NcJQnmFyIgYULLMJCaY2riQ55Bs+UN1prZ7R+E8mG3l1N2Gs60BZ3vO3Zxt/1uEs6fdaGO2deON1E0tt9ub0hqjm4GcIhMQBKFRItMyJUGVfSb2/zO57CPbiewyJBLXu1t2GagffpFIrEutCdsq8cepxPTvZUsbDqhEKmOm+C6JLx8wgKNqsRMe6Ib5dyYES+UAzuJAVdIKoyz6UORWdS2Oz/EXx63i+niEN74YE88ejPIcUySkjNqV/YCF9e7fFZEOW3dzh9XxUcFWPMJ6UbNG7u7jnNlIIL7EoreRtBzaNaZpnp88qq3kzjlssShw64iSUnujXs8yeFlaG8MXlmM5FMaoSEq2mNWwvub5PSbhLRF/qPYXqHs/y56re9NtY+J01+g04sJFnJRvVzLgbJ18lLySu7Dtsn2BcFvuWvY4yp3lrmN20vloEfxTVHSHAh6sqwGZ+90y95+9WN6ZrkdJdp5TOjtWLjwxsb4aXRJKpcNvwj/La/MG+taVvOlUJ9C8ffC8KSnXJiXfime0DjMHem/Oe/zDfBgoVbt8a3ApoqgoSNQuG6/Lm38jRjVKFjhQssAbJVm3kxy79+yxRLG76bq70cVEOfLAk+FzDoypdrwpf5yBmCZDWQhCpxHTrijiZFUr2jwrBGcf8pZB1XeDafnp0Q4XhNIOhHQwjCQDy5K6GyVTEsfqmMH70Eg2j6+7e26x+ld9f4DG3cR4TeGdmh8z9xVun18cP/ONT1+8Tockr+6Zprp8ymtq4DQc1PwqCoF8E39WXmUD4Dv/MSf2PDbg1+Of5jpVi9H3oXsbH8ru4SN5pdLDjxD27C8= -------------------------------------------------------------------------------- /图片/用户充值时序图.drawio: -------------------------------------------------------------------------------- 1 | 7Vxbj5s4FP41fpxRwJjLI+TSVdVKVWe13X1aMQmToJIQAZlLf/3aYHOxncQQSJjtVCM1GDBwznc+f+fYAOB0+/op8febr/EqiIA+Wb0COAO6rk00G/9HWt6KFtNARcM6CVf0oKrhIfwVsDNp6yFcBWnjwCyOoyzcNxuX8W4XLLNGm58k8UvzsKc4al51768DoeFh6Udi649wlW1oqzaZVDv+CML1hl7aRnTHo7/8uU7iw45ebxfvgmLP1mfd0EPTjb+KX2pNcA7gNInjrPi1fZ0GETErs1hx3uLI3vKWk2CXqZyw+fHLe/iepmjxcPeK/rL/ffn++U7Ti26e/ehAbQHmNvAM4JpgjoC9AJ4F5hZwHOB5YO6QH7ZJfrga8FDeMgMu7SbN3phJ8ePuyc/DNvoSPgVRiA0DvX2QhNsgCxK8J6LN36o272UTZsHD3l+SU18w2HDbJttGeEvDP7H/Mx+fkpTbUeTv0/Axv+oEtyTB8pCk4XPwPUgLmJHW+JCRK01L+JBG0YDUps9BkgWvtSZq0E9BjO8zecOHsL0MBxT3Bt18aYCoaNvU8ANN2uhT4K7LrisP4h/UiW0caogO5V1TM+g+DndZfg/IA2jGeShOsk28jnd+VPeRaLfT0FK2JiMNRiISY0psWQZp77Y04Pu1JQdMHaoZczBcMt+qEg0C3gw4mF9MYNvAmeTHuMBZCB7ABsE376VZEv/EER7FxNo5D0PvKYwirsmPwvWOsE/wRE4jFg3xQODS5iwmlJNiBgp36y/5MTOjavlOTUWaYnzuU5RT+iZcrYIdoZ848zO/oqMmJjxs3enkHhF06FO8rVXbBWAwSjBJ4WfBLEeuE/hp9hKk2ZBQuTM4rCAZViRg0c2hSEwSeBVYckQQsJgEINimpAWPQfMcNRgj8PccjAzt/GAkcyMcjEDheAgUtrZmczDSLDUCtQezpaVEoCbwIHDtvAWHxfSDQFsTaGuo3CkNtlclUBlYsP/zP/JjArzph4inUsnoxpvmcGLJHA1vWm2tyfFmSYhneLNs7N2YLP9uxALWmUZOk0xMKCLfJ2QX7v3caHifu8wIN94qJE6S759kYwbNAUPHORs5usTXljGYr0cjOErUqdNQw5QWUgobNBgHlWBoqzc+BpUG741GjOuSyhBx6IJQIXaf4wFnruZii6ToOM0iGdgcONNjkrLmH6Yal9ikuT956tpiBUhOx37C7jmqAEmQ+ocspi7UWghX1cht7Wte/2m6xNnSQW+wZEEXfX0jHmyfxo4s8dIlthT1g0RdGyS2MBeSYzTgLj4KFpynbXieI2X6wbQGE96SvOlGcdO+4tuMG0NGQrLy+WCBo7XLYvgB4THOsniLdwS7lUvm+IhJ93mRYOWnm2BFz8O76YSindcPDrtVvm+S78MP8jc58N5gm/+QffeWzbZnr/WDZ2/1rZrjToM+jQ/JMjhlDBrjmZ+sg5MZFx2mg1VjyvKo2yf3E6Q1PF+q4CSI/AwHc+NOZW6mnX8jcK4Rsc4Na7bV7KJ4FnpWBRahI+7K8dNTGmQCvMpHuwBxskkGE7iQUDJhX8zHSLlqBhmdm0TOXojcxyhe/hTx+RpmBTw1ulWgEycDxWYFTrLxVtvoEZqGKjRhO2jeYWw6FmyCaNILNhE3dGgOx2LFU5/HJuR0us7r7yMgx37132qH0aFAIQzKC10rKnRZMVBEvBAVgyC+O0x1VQZlPY4Apjy6DH6wVYWpacJ7dLqr1kA9cssc67NidgXKoseRYVyiNcRVK+8V0WxOdwSI1kyTAyLkvayKaYNLm4WOekJ0SenMEu8D0Y6I6Fup58m901TPGobudeWzrkr+LTXKcPJZ085IFGX5bHGMzKe/qgF3Voe3jSz+ztgjSiOrr8Bgyo+TM1izkEluC7gGqakQzp/mst8mosbWJJKHD6ffdyK8/cJHHtzSKt01p7yhrLxtEh1bLCezXeBOrqVyS+YkIzFqcie0UBfuZKki5eIyVaTdXSlXhKo8DMeTK+pcrgi7inCkG7z2uViEjy5bhEcWas7zCZ+8xO0i+WISGwtuLZ8A1MnU33XV9giApnFCE3YdqJFzpqOelLFmy69z9L54xW69ByUNR1CHZuTdoG67A3XXKtpac1xxuowqF4wEqskrGzJGoMh1hy+iKFb7xNxVWGt7fU3ee5zcPuNMsf0zdjKV2RXim3jHefyVEa+qfYzR5KDiaryOUzg6l+lBzbon6qf8x8n63uDfF7gN/ebg7o68d1j9uDM5wPAL1ZSRx6t3vqPbVT/4R9SuUP0wJCRNZjaNfIGJkS/MsvMVWjBPfIulWuKi//EvMFlHfprSjo6GjnrFwjy/VtWR1CusPtbjPWtR+DX97D97OwNZP4zH1Z/anWR9Je8kkWxwyyKMmL0rtsEM0fCEwrB6pJ6gWz1qUqv7CM1RmMKSGRYaZ+kU2Yp0WhwoQqpe5DL7yR2FuRCnG8sZfRco5JcRElTr5F3xsac5wzMl8/Lt13KVnK2+BpIzr/SNTJGshnsVGrVbWD/wWi6OZZDdb+77jmQWr47KOdW2MosvOQkdjU7RI1nBHwFPy18bL+eBENm084K/A/N5IGFdLg/kj3kgZaLiV4sYuuy9lWvOAyFZ/Rq73AZ2MQ9UfFZAgMWFbHZ6fR8vskwDXnHSRnmdCXvvcAS1dF4Qoa58hCC/ckro6v1P2jAReuaDCTaZonFdNh1qS7638cGF3V/54r+jcfM5cVPGhQ6ZsHPc3PeLI3N5Z1/wutJ8CSaY5sJokzjgasTJXgcRclFFhXiSOHW27vpCprS4Idhk1cLWym1ypqOeckf+vQJk6RzSpbOIV2BR2WdnxNraxwc1+uNMy7yhfpSW5XQRA7x/a8S2JEXKcHmq+HaEQrrknUUh4WQ9CklshfqRZEKK2HXhL+ImTyH/PYCeiMYUkpN+C/RS/MizUm6APcIYNQy1JY/z71XLavcypArBK8Hq8Sr7sdmaGkRNCUQhh4DewlmigC4L5+qVLdhQJk7XZXgqzNBfSbuQNLeiEJPP6rqukLI4rYIU3x3oK8plr5vk9QScTl20SO5/wwQWP1pIPgTUExPgzeozuoWHq88Uw/l/ -------------------------------------------------------------------------------- /图片/用户购买时序图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/管理员查看日志时序图.drawio: -------------------------------------------------------------------------------- 1 | 7Vrbcps6FP0aPTrDTVwejY3TZpLTnPjMSdKXDAXFMAXkghzb/fpKINtcZJu40NzayUzFlrwl77W29pIwUEfx6jx158EV9lEEFMlfAXUMFEVWoEn/Y5Z1YdE1WBhmaejzQTvDNPyJuFHi1kXoo6wykGAckXBeNXo4SZBHKjY3TfGyOuwRR9VZ5+4MNQxTz42a1tvQJwG3ypK06/iEwlnApzYh7/jmet9nKV4kfL4EJ6joid2NGz40C1wfL0sm1QHqKMWYFK14NUIRC+smYsXnJnt6t0tOUULafCC4/WlPb7IMTqaDFfzffFjeXAw2i3tyowWPBXAMMHTAUGYNSwKmDhwILBlYHOSMrDdxo99pzpqLOLoMH1EU0m+v2nRNJPTCuZsvjPYNPYJT1oHSMEYE0fY44uOvdzZ7GYQETeeux3wuKdWoLSBxRJ9k2qToE5d+JN0+R5E7z8Jv+XIkakmRt0iz8AndoKwgGbM+IbYeNxpG4SyhNoKZ44zOEyaz/9jDWNWpBS8IW9FoSzL24WaYeeSZV7QqmXjYzxGm3ydd0yG8V9nQiGeHxR+XO6ptcAhKJDM0bnQ5u2dbzzuYaYMj/RzU1SbqdWhLcZ/jMCH5GqAN4LgGJE5JgGc4caMylM2wHeZf62DCSihluRlLWRBLqPcWS0WQQTBPHIc1zAmwJeDowIK8YY5ZfrVMpZfJmL4yAarVTJAl2IRPlAu61Rd+mvFqckF5djiryWC0ywVd6SCWnx1fja+ch8XFjKxgePXwaRkN9OOhRIk/ZAWbPnmRm2WhV2VsXkuRv5dyByOH/EqZb8atFBko2iW4LUWRS2hOVHWGIFp8hmtGih0sA1mTzqrQKBuib7xkeJF6iH+wXLVrvuARP8RNZ4g0/NAYu+vSME7b/UuGknCeHRsKjztubKPaii74+scP6N75N+dz7Ss00MXi3/WgRRV6Hl3QKiR3pfY9a58pOuTP41Wpc7wuPZTS9Q0Tr0YWVdfOrPK/0ygooPMRz3tIeQJv5GjxJbmE/1irS2v4NcZXOFsORBV3v2ZlpZf2QmaxJ6zNxtDCPAKOBSxajJu0+xDFWD25GBsdFBAhsi+hSw9S7NRSbLaUpV3IGmEpbiPxf7cWH4rca9kRjfrOZZ1YiAeyfNRXV8XYUITzdFWMv9zfGUGgnceXxsPt/TQ9f3LjwWb76JgvNR60JdDLSTe1XuvkUxmjH/HTFVs0SThPr2zpaXd5+2xRTxX6+hE/PbFF7VjoC4tR53vLVuifWRWpL0GrA6nPl1sgd0j98ywooHk7NdGsUgDCmghpTdmagIRSzVF35wCxxmnSyjFzjW/nN28wV/0WOxbYcL/YpwqPVMmWkRR/p4I7YrfW4/xOX7UfwyiqmVx+oexR6uTqsn7THIe+z6YRHg2OyivwTA26vQDaHuKbKlQX8ErtS4TKgsRnx7FJDowOTAvYzsGzm8GwtE0Op60KTnPvFk6tll7CQ4XoVNEfnoKy3wYiR2MNhjDFXAbDyTsGrXaRpmpN0Kw/iZmiCTCzAOUS/WOYGcAefuRdUtNfepcUIdTcJfOssvUcIdrQmIXum3aeZ3TTNDeDzeJ104i1P9J2KdcyzxJcZ5nwTwIrECgd6d4eLrh5wF+LSLVg/WRlaGfa799ma7WX8Ufcdidhha9AOmfIXlzLh5S38C6jjpOmnPwG7Yijjk7WUBPP0+srNFHp+CvIDgkyTWuWhb4EmfDqbM+p1QGWWjq1HjgT0QEGH8y6xq8auwZQAjj3SzWt9vZb9AuHvk5AQvBE+dYEb79Ue8dQ1cpqj4dV+rj72WSxk+5+lqo6vwA= -------------------------------------------------------------------------------- /图片/管理员管理用户信息时序图.drawio: -------------------------------------------------------------------------------- 1 | 5Vpdd5s4EP01enQOHxJGj2DjdHOS3WyyZ5vtSw4FxeYUIxfk2O6vrwTC5kOJiYMTb9KXSiMh5Ll35o5EgDmar89TfzG7oiGJgaGFa2COgWHoBrL5f8KyKSwWRIVhmkahnLQz3Ea/iDRq0rqMQpLVJjJKYxYt6saAJgkJWM3mpyld1ac90Lj+1oU/JS3DbeDHbevXKGQzadU1bTfwhUTTmXy1jeTAdz/4MU3pMpHvS2hCipG5Xy4jp2YzP6Srisn0gDlKKWVFa74ekVi4tfRY8dzkidHtllOSsC4PzL7+cm9vsgxNbgdr9K99v7q5GJSbe/TjpfQF8IbA8YCjiwbWgG0BDwGsAyxBztim9Bv/TQvRXM7jy+iBxBH/9abL98SiIFr4+cb4mBMwmooBkkZzwghvj2M5/3pnc1eziJHbhR+INVecatw2Y/OY93Te5Ogznz+Sbvtx7C+y6Hu+HY1bUhIs0yx6JDckK0gmrI9E7MePnTiaJtzGqFg44++Jkuk/ojM2LW6hSyZ2NNqSTDzcdrP0vFiVrCsm6fZzQvnvSTd8ihw1ShrJ6MCyu9pRrcRhViHZEEqjL9k93a68g5k3JNIvQd1so96EtuL3BY0Slu8BuQCNG0DSlM3olCZ+XIWy7bbn+dfZmajmSl1v+1JX+BJZR/OloYgglAeOJxr2BLga8CyAkWzYYxFfHUPpfSLmWJGAzHok6Bpqw6eKBQsfCz84PJlYMF7sznowDLvFgmX04Ms/vNCcX3n3y4spW6Po6v7LKh5Y+11JktARgs17QexnWRTUGZtrKQmfpNyzniNhTebbfqt4BqmyhLSlJPYZj4l6naHwlnzDtSDFDpaBDrWzOjRGSfRylYwu04DIB6uq3VgL7VmH+emUsNY63Mf+pjJN0vbpLSNN+Z4dG4oVd9zYerUTXej1z5/IvwtvzhfwGxqSi+Xfm0EHFXoZXcg6YneV9n+ifWZYSPbH68rgeFPpVMK1QrwGnzoz8b2I1yCLacEzXP13GAUVdN6z8hOkPIA3erz8K7lEf+L1JXa+zekVzVYDleK2a1begMCxc8W1gTsEHgTuJJ/DLTpwJvkcrtAj4GGAuSq3+fcpVNk8WJWHPSiJEuL3KFCf5dqhmmx3rE/7qG+Umtyl1n+tKD/nuRPRZDRspjB8oCIPdH3vWn2p8tBQvqcvVVYTRnUlwBOoB7CZH2gQcJBouBi4UKROPmTD/NAzyo84SCTTkvgVmvEIYnViZSylP3hCi8X1wDi/PDHdhyiOGyZfntwDTrk8eptH+nkUhuI1ytT7Gvp2D/zB9ixaplGkSKOWguLmsWJfbyPZU4F1hmsllobwgSWWQriKQHyuyJIprYiy/08Ksuv8QKiBe9cMZDX0GmmNhfqrv9QZQp0gJgC7lQSBRanloqdrq5NNBy+N/O3Be3t4aov+28a9IvBl9evlV1FQJO8uFfKHxQw2YkhZqKkqteOBpijUFKDlWOFcZW0H4ElpyW/pHT5Hz4MRihj8uOg1ritM2EYPvyl4uHepTfi+7qqdQmp1bJSGndbmvU219w5qa56U2hqNagw2z6pd1VaHjYWa16cvLvZ712OoyBxYVOB2kSeGwHU+syBD670FWYWQBVxbFEvi7grnCBVFlJ1j5uW5/VNLdCOCt6fsqkTb6C1hVFS+PR2oerqxVjj8RPIxwqh5azKEZ/D119Ow8XV9z7L9nY2U3zR6Z4gSRCXQVYE+wY8TTZygcfAnsT0L9XT7hlrC/wbfxFRC0ZaFj3IIaImBgtidDwEQtvWhp0MA7+7+UKuAeveHcKb3Gw== -------------------------------------------------------------------------------- /图片/管理员管理用户账号时序图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/管理员管理订单时序图.drawio: -------------------------------------------------------------------------------- 1 | 5VrbcuI4EP0aPUL5Jtt6tIFkNpXsZsPWzuy8pDy2AqoRFmOLAPP1K9kCfBGBMGZyy0ukltwSfU7rtAXAHsxWl1k0n96wBFNgGckK2ENgWaYFffFPWtalxXVgaZhkJFGTdoYx+YmV0VDWBUlwXpvIGaOczOvGmKUpjnnNFmUZW9anPTBaX3UeTXDLMI4j2rZ+JgmfKqtpGLuBT5hMpmppH6qBb1H8fZKxRarWS1mKy5FZtHGjpubTKGHLiskeAXuQMcbL1mw1wFSGdROx8rmLPaPbLWc45cc8MP38Mxzf5Tm8GPdW8F//fnl31dts7jGiCxULMPJAMAKBKRvIAL4LRhAgEyAFcs7Xm7iJzzSXzcWMXpMHTIn49HYo9sRJTOZRsTExFsScZXIAZ2SGORbtIVXzb3e2cDklHI/nUSx9LgXVhG3KZ1T0TNEU6PNIPJJt+5RG85x8K7ZjCEuG40WWk0d8h/OSZNL6iOV+IhpQMkmFjTPpOBfrkHTyj+wMbVdY2ILLHQ22JJMPt8OsIi+94lXFpMJ+iZn4PNlaTFGj1oZGKjuQ6i53VNvgMK2QzHOUMVLsnmw972AWDYX0c1C326g3oa3Efc5Iyos9wBDAYQNIlvEpm7A0olUo22F7mn9HBxPWQmma7ViamlhC92yxtDQZBIvEGcmGfwFCA4xcgKBq+EOZX0em0stkzLkyAdr1TDAN2IZPlwsuOhd+jvdqcsF6djjryeAdlwuu1UEs/xgl9uxmdL+4mvAVJDf3n5a05x4OJU6TQAq26MU0ynMS1xlbaClO9lLuycjhpCbz7bhVIgN1p4SyZZhGXOREvc7QREutcCtJsYOlZzpGvw6NtSH6xkvOFlmM1YNV1W74ggf88CibYN7yI2IcrSvTFG33bxka2nV2bCg97rixjepRdGG3P37A6Etydzl3vkIPXy3+XveOUKHn0QWvCP9Saf8n233Lhao/XFUGh+tKp5Kub5h4DbLYrtNH1b/TKKih8wHPe0h5Am9MuvgrvYZ/otU1Cr7O2A3Llz2d4rZrVr+wFGIsFFeorxwS7QEYIYCGcuhDarB9sgZ7HeiGFtCXKEefZNapCuwfWY12Uc1oFfiYyv5XJfipyL2Wg9BrHljoRP3tmeZBX11psGdp1+lKg7WE2Rwf3WtwH9VU2ICoAxVW2y3Re0qYVR6U0Lwd3vr1sxnCxkFxLG3dxiEPjYaj7iRafw5pJNoH4QVAYSHIEARQ6rBQ7BDuF2RxCvM62XKese9CFKm8UBoW1212+EAobZgiddcTC+oUCtC8BJqRJJHLaOX74BH4XJ3Yvptt6+u2UrgaXtnnEgpTk/jlbQUyC6gcEHiaIurdIuQ0Mkar5ToxPx9EGi3XQOQC35c1rxwKALp4xxA1XlJtpw0R+p0IWY4GIQQEc/wSDw+EwUc+5hz3pY85HUJQZkxgFHgIbJwPdcyZjRxCmrc/H/5OiDS1Qkcl6BmugVTAX0u9iGDz5cRz+s6v3/k4ja+sDrjtrprUXhR2zpC9uFbfF97CjV8TJ8c6+Z75gKOOXnKho1/nrBfNx4lAq5BSluL7bzEh3FZd71kfmjxw2vrQUY0lurtfP5RQ735dYo/+Bw== -------------------------------------------------------------------------------- /图片/管理员管理货物时序图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/类图/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/.DS_Store -------------------------------------------------------------------------------- /图片/类图/admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/admin.png -------------------------------------------------------------------------------- /图片/类图/goods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/goods.png -------------------------------------------------------------------------------- /图片/类图/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/login.png -------------------------------------------------------------------------------- /图片/类图/order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/order.png -------------------------------------------------------------------------------- /图片/类图/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/register.png -------------------------------------------------------------------------------- /图片/类图/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/user.png -------------------------------------------------------------------------------- /图片/类图/userinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/类图/userinfo.png -------------------------------------------------------------------------------- /图片/系统类图.drawio: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /图片/邮箱配置图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/图片/邮箱配置图.png -------------------------------------------------------------------------------- /客户端图片/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/.DS_Store -------------------------------------------------------------------------------- /客户端图片/个人账户.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/个人账户.png -------------------------------------------------------------------------------- /客户端图片/修改个人信息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/修改个人信息.png -------------------------------------------------------------------------------- /客户端图片/充值.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/充值.png -------------------------------------------------------------------------------- /客户端图片/全部商品.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/全部商品.png -------------------------------------------------------------------------------- /客户端图片/分类商品.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/分类商品.png -------------------------------------------------------------------------------- /客户端图片/店铺评分.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/店铺评分.png -------------------------------------------------------------------------------- /客户端图片/店铺详情.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/店铺详情.png -------------------------------------------------------------------------------- /客户端图片/忘记密码.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/忘记密码.png -------------------------------------------------------------------------------- /客户端图片/排行榜.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/排行榜.png -------------------------------------------------------------------------------- /客户端图片/搜索.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/搜索.png -------------------------------------------------------------------------------- /客户端图片/注册.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/注册.png -------------------------------------------------------------------------------- /客户端图片/登录.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/登录.png -------------------------------------------------------------------------------- /客户端图片/详情页1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/详情页1.png -------------------------------------------------------------------------------- /客户端图片/详情页2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/详情页2.png -------------------------------------------------------------------------------- /客户端图片/详情页3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/详情页3.png -------------------------------------------------------------------------------- /客户端图片/首页1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/首页1.png -------------------------------------------------------------------------------- /客户端图片/首页2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/首页2.png -------------------------------------------------------------------------------- /客户端图片/首页3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/客户端图片/首页3.png -------------------------------------------------------------------------------- /管理员图片/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/.DS_Store -------------------------------------------------------------------------------- /管理员图片/添加商品.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/添加商品.png -------------------------------------------------------------------------------- /管理员图片/添加账户.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/添加账户.png -------------------------------------------------------------------------------- /管理员图片/管理员日志.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/管理员日志.png -------------------------------------------------------------------------------- /管理员图片/管理用户信息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/管理用户信息.png -------------------------------------------------------------------------------- /管理员图片/管理账号.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/管理账号.png -------------------------------------------------------------------------------- /管理员图片/订单管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/订单管理.png -------------------------------------------------------------------------------- /管理员图片/货物管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SSDWGG/rabbitMall/0a0a596f82fc0c5c780be72f3873e5063c37103d/管理员图片/货物管理.png --------------------------------------------------------------------------------