# javaee-finalExam **Repository Path**: netlops/javaee-final-exam ## Basic Information - **Project Name**: javaee-finalExam - **Description**: JavaEE 期末作业 一个电子网购商城 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: https://demo1.shunleiete.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-06 - **Last Updated**: 2022-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **JavaEE期末电子商城文档**# ## **项目概述** ` `本项目包含前台前端系统、后台前端系统、后端服务系统(前台后台的服务提供方),前台设计采用**Vue**全家桶系列,前台渲染通过使用第三方组件与自定义组件集成,后台渲染使用**antd pro**的快捷开放架子设计,所以此部分的后端响应规范符合**antd**官方组件的响应规范。 ` `本项目功能块包括: ` `商城前台: ` `未登录:查看商品、分类检索商品(包括搜索商品)、浏览网站所有商品、价格区间检索商品(包含判断是否有货)、将商品添加到购物车、可对购物车的商品进行修改(此部分本地操作,存到**LocalSorage**、登录的是对接**Mysql**购物车表**CRUD**操作) ` `登录:包含未登录的所有功能、能对购物车结算生成订单(未付款订单**3**小时后自取消)、能查看**自己**的订单、注销用户 ` `商城后台管理: ` `管理员登录:商品类别CRUD、商品CRUD、能对用户订单查看(不支持修改)、分类(只有一级、二级分类)管理、用户管理CRUD、支持对分类、商品的图片绑定 ## **项目环境:** ### **前台:** ` `Vue3.0、Node v14.19.0 (后续环境npm install安装适配即可,package.json包含依赖版本信息) ### **后台:** ` `React 17、Node v14.19.0 (后续环境npm install安装适配即可,package.json包含依赖版本信息) ### **后端:** ` `**Maven3**.0 + **Java** 8 + **Mysql** 5.7 + **ssm**(**Spring** **framework** 统一版本 5.2.8.RELEASE) + **jjwt** v 0.9.1 + **redisson** v 3.17.3 + **fastjson** v 1.2.76 ## **数据库模型** ### **ER图展示** ![image-20220623171155473](mdimg/image-20220623171155473.png) ### **user:用户表** | 字段 | 类型 | 主键 | 外键 | 注释 | | :--------- | :------------- | :--- | :--- | :----------------- | | id | int(10) | 是 | 否 | 自增(500000) | | account | nvarchar(50) | 否 | 否 | 用户名 | | password | navarchar(100) | 否 | 否 | 密码 | | auth | int | 否 | 否 | 1:用户,2:管理员 | | isAvaiable | int | 否 | 否 | 是否可用 | | isDelete | int | 否 | 否 | 是否被删除(软删除) | ### **picture:图片表** | 字段 | 类型 | 主键 | 外键 | 注释 | | :------- | :------------ | :--- | :--- | :------- | | id | int | 是 | 否 | 自增 | | img\_url | nvarchar(300) | 否 | 否 | 图片地址 | ### **category:分类表** 删除的时候 会影响 分类图片表、分类商品表 | 字段 | 类型 | 主键 | 外键 | 注释 | | :-------------- | :----------- | :--- | :--- | :---------------------------- | | id | int(10) | 是 | 否 | 自增(100000) | | name | nvarchar(50) | 否 | 否 | 分类名 | | parent\_id | int(10) | 否 | 否 | 默认指0(代表当前为一级分类) | | category\_level | int | 否 | 否 | 分类等级 | | show\_status | int | 否 | 否 | 是否显示 1:展示 0:不展示 | ### **good 商品表** 删除会影响商品图片表不影响商品订单表、没做sku spu区分 | 字段 | 类型 | 主键 | 外键 | 注释 | | :----------- | :------------ | :--- | :--- | :---------------------- | | id | int | 是 | 否 | 自增(700000) | | name | nvarchar(50) | 否 | 否 | 商品名 | | category\_id | int | 是 | 否 | 分类名 | | create\_time | datetime | 否 | 否 | 创建时间 | | update\_time | datetime | 否 | 否 | 更新时间 | | inventory | int | 否 | 否 | 存货 | | desc | nvarchar(100) | 否 | 否 | 描述 | | discount | double | 否 | 否 | 折数 | | order\_num | int | 否 | 否 | 优先级(默认根据id desc) | ### **order (与商品的购买数量、购买总金额都有联系)** | 字段 | 类型 | 主键 | 外键 | 注释 | | :----------- | :------- | :--- | :--- | :------------------------------ | | id | int | 是 | 否 | id不自增,雪花算法 | | account\_id | int | 否 | 否 | 用户id | | order\_state | int | 否 | 否 | 订单状态 (1:未支付,2:支付完成) | | pay\_money | double | 否 | 否 | 支付金额 | | create\_time | datetime | 否 | 否 | 创建时间(java 直接new Date()) | | total\_num | int | 否 | 否 | 总计数量 | ### **order\_to\_good:订单商品表** | 字段 | 类型 | 主键 | 外键 | 注释 | | :----------------- | :----- | :--- | :--- | :------------- | | id | int | 是 | 否 | id自增 | | order\_id | int | 否 | 否 | 订单 | | good\_id | int | 否 | 否 | 商品Id | | good\_num | int | 否 | 否 | 购买的商品数量 | | good\_total\_price | double | 否 | 否 | 购买金额 | ### **category\_to\_picture:存储分类图片** 设计的时候每次插入的时候需要收集当前img的id的 | 字段 | 类型 | 主键 | 外键 | 注释 | | :------------------ | :--- | :--- | :--- | :--------------------------------------- | | id | int | 是 | 否 | 自增 | | category\_id | int | 否 | 否 | 分类id | | img\_id | int | 否 | 否 | 图片id | | category\_level\_id | int | 否 | 否 | 分类等级(用于选择是横幅 还是 分类展示) | | sort | int | 否 | 否 | 权重(可以用做首选图) | ### **Banner:存储横幅** | 字段 | 类型 | 主键 | 外键 | 注释 | | :----------- | :--- | :--- | :--- | :-------------------- | | id | int | 是 | 否 | 自增 | | category\_id | int | 否 | 否 | 分类id | | img\_id | int | 否 | 否 | 否 | | type | int | 否 | 否 | 分类级别(应必须是1) | ### **good\_to\_picture:存储商品对应的图片(一对多)** | 字段 | 类型 | 主键 | 外键 | 注释 | | :---------- | :--- | :--- | :--- | :------------- | | id | int | 是 | 否 | 自增 | | good\_id | int | 否 | 否 | 商品id | | picture\_id | int | 否 | 否 | 图片Id | | sort | int | 否 | 否 | 排序优先级使用 | ### **cart:购物车表** | 字段 | 类型 | 主键 | 外键 | 注释 | | :------------ | :--- | :--- | :--- | :------------------------------------ | | id | int | 是 | 否 | 自增 | | account\_id | int | 否 | 否 | 用户id | | good\_id | int | 否 | 否 | 商品id | | count | int | 否 | 否 | 商品数量 | | selected | int | 否 | 否 | 是否被选中 | | is\_effective | int | 否 | 否 |

**是否有效(可能库存满了)**

| ## **功能模型** ### **前台:** ![image-20220623171013146](mdimg/image-20220623171013146.png) ### **后台:** ![image-20220623171112413](mdimg/image-20220623171112413.png) ## **技术选型** 前台:`Vue` + `Vuex`(状态管理) + `Vue Router`(路由管理) + `Vee-validate`(数据验证) + `vuex-persistedstate`(方便操作`LocalStorage`) 后台: `TypeSrcipt` + `Antd Design Pro`基础上开发 后端: `ssm` + `mybatis plus`(方便对单表的CRUD操作) + `mybatis-plus-generator`(快速生成`po、mapper、service、impl、controller`系列初始文件) + `RESTful Service`(规范`RestFul`风格) + `fastjson`(方便前后端联调) + `redis`(`Redisson`,用于管理员`token`唯一性) + `jwt`(`token`检验,鉴权管理) ## **功能演示** ### **前台:** #### *未登录:* **首页:** ![image-20220623165100559](mdimg/image-20220623165100559.png) **分类展览:** ![image-20220623165021901](mdimg/image-20220623165021901.png) **分类商品**: ![image-20220623165317750](mdimg/image-20220623165317750.png) **检索商品:** ![image-20220623165332962](mdimg/image-20220623165332962.png) **价格区间搜索:** ![image-20220623165405464](mdimg/image-20220623165405464.png) **商品详情:** ![image-20220623165422769](mdimg/image-20220623165422769.png) **加入购物车** ![image-20220623165453022](mdimg/image-20220623165453022.png) ![image-20220623165509871](mdimg/image-20220623165509871.png) ![image-20220623165526364](mdimg/image-20220623165526364.png) #### **登录:** **注册页面:** ![image-20220623165545534](mdimg/image-20220623165545534.png) **登录页面:** ![image-20220623165640483](mdimg/image-20220623165640483.png) **购物车同步:** ![image-20220623165659593](mdimg/image-20220623165659593.png) **下单结算:** ![image-20220623165715373](mdimg/image-20220623165715373.png) **订单付款:** ![image-20220623165729274](mdimg/image-20220623165729274.png) **支付订单:** ![image-20220623165744975](mdimg/image-20220623165744975.png) **支付成功展示(未采取回调,只是间隔检索)**: ![image-20220623165758175](mdimg/image-20220623165758175.png) **我的订单:** ![image-20220623165812932](mdimg/image-20220623165812932.png) **用户注销(假删除):** ![image-20220623165836604](mdimg/image-20220623165836604.png) ![image-20220623165857214](mdimg/image-20220623165857214.png) ![image-20220623165912305](mdimg/image-20220623165912305.png) ### **后台:** **分类管理:** ![image-20220623170245527](mdimg/image-20220623170245527.png) ![image-20220623170312673](mdimg/image-20220623170312673.png) ![image-20220623170336951](mdimg/image-20220623170336951.png) **用户管理:** ![image-20220623170830743](mdimg/image-20220623170830743.png) **商品管理:** ![image-20220623170712208](mdimg/image-20220623170712208.png) ![image-20220623170904350](mdimg/image-20220623170904350.png) **订单阅览:** ![image-20220623170936024](mdimg/image-20220623170936024.png) ## 运行注意 ### redist配置: `electronic-mall-server/src/main/java/com/netlops/electronicmallserver/config/MyRedissonConfig.java` ### Mysql配置文件 `electronic-mall-server/src/main/resources/config/db.properties` ### 启动顺序 `Java`启动过项目优先启动(保证`8080`端口即可) ### 假装扫码支付 `scanServer`建议运行在云服务器上方便他人扫描演示 ### 扫码支付配置链接 `electronic-mall/src/views/member/pay/index.vue` ![image-20220623172802379](mdimg/image-20220623172802379.png) ### Mysql文件 `sql`文件夹下 ### 临时图片上传小工具 那个唯一的`py`文件