Skip to content

花卷商城是一款基于 Springboot、Vue 的电商项目,前后端分离技术;

License

Notifications You must be signed in to change notification settings

mayingfa/steamed-bread-roll-mall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Steamed Bread Roll Project

项目文档

项目介绍

花卷商城,一款基于 Springboot+Vue 的电商项目,前后端分离项目

项目演示地址:花卷买卖

本项目为简单的课设项目,禁止修改后商用,不承担一切责任

项目部署失败或不会部署的,可以加QQ联系我,简单问题会回复。

对项目部署不熟悉,想省事,或想快速部署测试效果的,可以考虑远控帮你部署。

👉 QQ:1325554003

测试账号

后台管理账号

顾客账号

支付宝支付账号

迭代更新

更新时间:2021-12-25

不兼容升级:

  1. 支持Docker部署,通过Dockerfile构建镜像
  2. 优化上传图片逻辑
  3. yml配置文件加密处理,不对外暴露配置文件信息
  4. 启动项目时,需要传入配置文件解密密钥,或者将加密的配置信息换成自己的

更新时间:2021-12-05

问题修复:

  1. 创建用户、生成订单等操作造成时间字段报null空指针错误。【已修复】
  2. 从购物车下单后,购物车中的商品还存在问题。【已修复】
  3. 注册用户页面,发送邮箱验证码时,数字验证码一直不变问题,【已修复】
  4. 项目文件目录规范化,目录命名规范化。
  5. Vue项目启动命令为:npm run serve 或 npm start,项目启动后自动打开网页。

新功能:

  1. 项目启动时,可通过application.yml配置文件配置超级管理员账号,在admin属性下配置邮箱、用户名等信息。当项目启动时自动检测邮箱是否已被注册;若此邮箱没有被注册,则自动帮你注册为超级管理员账号。

  2. 商品评价时,增加敏感词汇过滤功能,在项目resources文件夹下有个words.txt文件存储敏感词汇信息,当评价商品时,会将敏感词汇替换成*;例如words.txt中有【刷单】这个词,当评论中存在刷单时,会被替换为*

  3. vue项目中引入animate.css动画库,个别地方增加了一些动画效果,例如首页logo、花卷会员等地方。如果想要自定义动画效果,只需要在对应的标签上加个class属性就可以。

    animate.css官网链接:https://animate.style/

    <h1 class="animate__animated animate__bounce">An animated element</h1>
  4. 我的订单页面,允许隐藏已经购买完成的订单信息,当购买数量过多时,会显得页面特别乱,增加了隐藏订单功能。

以上是本次项目迭代更新的全部功能,如果项目中你发现了新的问题,可以加QQ讨论如何修复此问题。


Docker部署项目

# Dockerfile 构建项目
docker build -t breadroll-project/breadroll-mall:1.0 .
# docker 启动项目
docker run -d -p 9999:9999 --name breadroll-mall \
-e jasypt_password="your password" \
-v /etc/localtime:/etc/localtime \
-v /docker/project/mall/logs:/log \
breadroll-project/breadroll-mall:1.0

软件架构

后端技术

技术 说明 官网
SpringBoot 容器+MVC框架 https://spring.io/projects/spring-boot
Shiro 认证和授权框架 Apache Shiro Simple. Java. Security.
MyBatis ORM框架 http://www.mybatis.org/mybatis-3/zh/index.html
MySQL 数据库 https://www.mysql.com/
Redis 分布式缓存 https://redis.io/
Druid 数据库连接池 https://github.com/alibaba/druid

前端技术

技术 说明 官网
Vue 前端框架 https://vuejs.org/
Vue-router 路由框架 https://router.vuejs.org/
Vuex 全局状态管理框架 https://vuex.vuejs.org/
Element 前端UI框架 https://element.eleme.io
Axios 前端HTTP框架 https://github.com/axios/axios
vue-clipboard2 将内容复制到剪贴板 https://github.com/Inndy/vue-clipboard2
vuex-persistedstate vuex持久化 https://www.npmjs.com/package/vuex-persistedstate
nprogress 进度条控件 https://github.com/rstacruz/nprogress

开发环境

工具 版本号 下载
JDK 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Mysql 5.7 https://www.mysql.com/
Redis 5.0.10 https://redis.io/download

第三方技术

工具 官网
支付宝沙箱技术 https://opendocs.alipay.com/common/02kkv7
OSS 存储 https://cn.aliyun.com/
阿里云短信服务 https://cn.aliyun.com/
网易邮箱服务 https://email.163.com/

项目部署

将项目通过maven打成jar包,服务器运行jar包即可

需开放的端口号:

9999	# 项目端口号
3306	# mysql 主机端口
6379	# redis 数据库
994		# 网易163邮箱 服务端口

软件截图

登录界面

image-20210123150534593

个人中心

image-20210123145636758

修改密码

image-20210123145727924

我的订单

image-20210123145844095

我的购物车

image-20210123145912312

商品搜索

image-20210123150025628

购买页面

image-20210123150056791

商品评价

image-20210123150147433

管理后台

由于数据安全性,想要进入后台需要我授予权限后才能访问

image-20210123151009898

商品列表

image-20210123151322117

商品分类

image-20210123151555762

商品品牌

image-20210123151424726

商品采购

image-20210123151512327

订单列表

image-20210123151939162

退货申请处理

image-20210123151707001

退货原因设置

image-20210123151741155

商品轮播图

image-20210123152018922

用户列表

image-20210123152141960

角色列表

image-20210123152215106

数据库文档

数据库介绍

数据库名

目前数据库名为 qiu ,若需更改数据库名称时,需要将 数据库事件 中的数据库名一并更改。

数据库编码

字符集:utf8

数据库排序规则:utf8_general_ci

数据库表(18个)

用户表(user)
列名 数据类型 长度 默认 主键 非空 自增 注释
user_id int 5 用户ID
account_number varchar 30 用户账号
user_name varchar 30 用户昵称
password varchar 50 用户密码
user_sex varchar 6 用户性别
telephone varchar 11 用户手机号
creat_time timestamp CURRENT_TIMESTAMP 注册时间
login_time timestamp CURRENT_TIMESTAMP 登录时间
user_state tinyint 1 1 用户状态
summary varchar 50 个人简介
user_address varchar 100 用户地址
avatar_url varchar 200 用户头像
background_url varchar 200 背景图片
角色表(role)
列名 数据类型 长度 默认 主键 非空 自增 注释
role_id int 5 角色id
role_name varchar 30 角色名称
role_describe varchar 50 角色描述
role_state tinyint 1 1 是否启用
用户角色表(user_role)
列名 数据类型 长度 默认 主键 非空 自增 注释
user_id int 5 用户id
role_id int 5 角色id
花卷VIP表(vip)
列名 数据类型 长度 默认 主键 非空 自增 注释
vip_id int 6 vip ID
account_number varchar 30 用户帐号
creat_time timestamp CURRENT_TIMESTAMP 充值时间
overdue_time timestamp CURRENT_TIMESTAMP 过期时间
商品表(product)
列名 数据类型 长度 默认 主键 非空 自增 注释
product_id int 5 商品ID
product_no varchar 30 商品编号
product_name varchar 30 商品名称
product_type varchar 30 商品类别
product_describe varchar 100 副标题
product_brand varchar 30 品牌
in_price double 进价
out_price double 售价
product_stock int 6 库存
lowest_stock int 6 最低库存
is_stockout tinyint 1 0 是否缺货
is_new tinyint 1 1 是否新品
is_sale tinyint 1 1 是否上架
sale_time timestamp CURRENT_TIMESTAMP 上架时间
product_url varchar 200 商品图片
商品类别表(product_type)
列名 数据类型 长度 默认 主键 非空 自增 注释
type_id int 5 类别id
type_name varchar 30 类别名称
type_describe varchar 100 类别描述
type_url_left varchar 200 左侧宣传图
type_url_top varchar 200 横幅宣传图
商品品牌表(product_brand)
列名 数据类型 长度 默认 主键 非空 自增 注释
brand_id int 5 品牌ID
brand_name varchar 30 品牌名称
brand_describe varchar 100 品牌描述
规格表(specs)
列名 数据类型 长度 默认 主键 非空 自增 注释
specs_id int 5 规格ID
specs_name varchar 50 规格类型
product_type varchar 30 商品类别
商品规格表(product_specs)
列名 数据类型 长度 默认 主键 非空 自增 注释
product_id int 5 商品id
specs_id int 5 规格id
供应商表(supplier)
列名 数据类型 长度 默认 主键 非空 自增 注释
supplier_id int 5 供应商ID
supplier_no varchar 30 供应商编号
supplier_name varchar 30 供应商名称
product_type varchar 30 商品类别
principal varchar 30 负责人
contact_way varchar 30 联系方式
status tinyint 1 1 是否可用
采购表(purchase)
列名 数据类型 长度 默认 主键 非空 自增 注释
purchase_id int 5 采购ID
purchase_no varchar 30 采购编号
purchase_number int 6 进货数量
purchase_time timestamp CURRENT_TIMESTAMP 进货时间
receipt_time timestamp CURRENT_TIMESTAMP 收货时间
product_no varchar 30 商品编号
product_name varchar 30 商品名称
supplier_no varchar 30 供应商编号
supplier_name varchar 30 供应商名称
account_number varchar 30 操作员编号
user_name varchar 30 操作员名称
receipt_status tinyint 1 收货状态
商品评价表(product_review)
列名 数据类型 长度 默认 主键 非空 自增 注释
review_id int 8 用户评论ID
account_number varchar 30 用户帐号
product_no varchar 30 商品编号
product_specs varchar 30 商品规格
order_no varchar 30 订单编号
review_time timestamp CURRENT_TIMESTAMP 评论时间
star_level double 商品评星
product_review varchar 300 商品评价
轮播图表(banner)
列名 数据类型 长度 默认 主键 非空 自增 注释
banner_id int 5 商品广告牌ID
product_name varchar 30 商品名称
product_url varchar 200 商品链接
banner_url varchar 200 广告宣传栏链接
订单表(order)
列名 数据类型 长度 默认 主键 非空 自增 注释
order_id int 7 订单ID
order_no varchar 30 订单编号
order_time timestamp CURRENT_TIMESTAMP 下单时间
product_no varchar 30 商品编号
product_specs varchar 30 商品规格
user_account varchar 30 用户账号
user_name varchar 30 用户名称
contact_way varchar 30 联系方式
pay_price double 商品金额
pay_amount int 6 购买数量
pay_type varchar 20 支付方式
order_from varchar 20 订单来源
order_state varchar 20 订单状态
accept_address varchar 100 收货地址
return_state tinyint 1 0 退货状态
物流表(logistics)
列名 数据类型 长度 默认 主键 非空 自增 注释
logistic_id int 6 物流ID
order_no varchar 30 订单编号
sender varchar 30 发货人
sender_tel varchar 30 发货人联系方式
sender_add varchar 50 发货人联系地址
receiver varchar 30 收货人
receiver_tel varchar 30 收货人联系方式
receiver_add varchar 50 收货人联系地址
parcel_name varchar 30 物流公司
退货原因表(return_reason)
列名 数据类型 长度 默认 主键 非空 自增 注释
reason_id int 5 退货ID
reason_name varchar 30 退货理由
status tinyint 1 1 是否启用
商品退货表(return_goods)
列名 数据类型 长度 默认 主键 非空 自增 注释
return_id int 5 退货ID
apply_time timestamp CURRENT_TIMESTAMP 申请时间
order_no varchar 30 订单编号
user_number varchar 30 用户账号
user_name varchar 30 用户名称
return_price double 退款金额
operator_number varchar 30 操作员账号
operator_name varchar 30 操作员名称
deal_time timestamp 处理时间
return_reason varchar 30 退货原因
return_state varchar 20 退货状态
购物车表(shopping_cart)
列名 数据类型 长度 默认 主键 非空 自增 注释
cart_id int 8 购物车ID
account_number varchar 30 用户帐号
product_id int 5 商品ID
pay_amount int 5 购买数量
product_specs varchar 100 商品规格

数据库触发器(2个)

用户表插入触发器(user_insert)

注册用户时,自动向 用户角色表添加信息,将新注册的用户权限设置为 普通用户

CREATE
    TRIGGER `user_insert` AFTER INSERT ON `user` 
    FOR EACH ROW BEGIN
	DECLARE roleId INT;
	SET roleId = (SELECT role_id FROM role WHERE role_name ='顾客');
		INSERT user_role VALUES(new.user_id,roleId);
    END;
$$
订单表删除触发器(order_delete)

当用户取消未付款订单时,自动将订单购买数量加到商品库存上

CREATE
    TRIGGER `order_delete` BEFORE DELETE ON `order` 
    FOR EACH ROW BEGIN
	UPDATE product SET product_stock = product_stock + old.pay_amount WHERE product_no = old.product_no;
    END;
$$

数据库事件(1个)

商品表定时事件(product_event)

通过定时事件,每天定时检查

① 当商品上架时间超过15天后,自动取消新品状态,(商品新品状态保留15天)

② 当用户下单后,但并未付款,为其保留24小时付款时间,24小时超过后,商品收回,自动取消订单

③ 当VIP会员过期后,自动检查并从表中删除过期会员的信息

DELIMITER $$

CREATE EVENT `qiu`.`product_event`

ON SCHEDULE EVERY 1 DAY

STARTS '2021-1-7 02:00:00'
#开始时间自行更改
ON COMPLETION PRESERVE

DO
	BEGIN
		UPDATE product SET is_new = 0 WHERE sale_time<(CURRENT_TIMESTAMP() + INTERVAL -15 DAY);#修改15天前的新品数据
		DELETE FROM qiu.`order` WHERE order_time < DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND order_state='待付款';	#清除24小时内未付款的订单信息
		DELETE FROM vip WHERE overdue_time <= CURDATE(); #清除 VIP表 会员过期的信息
	END$$

DELIMITER ;

检测事件是否开启

show variables like 'event_scheduler';

开启事件

set global event_scheduler = on;

开启执行事件

alter event product_event on completion preserve enable;

关闭执行事件

alter event product_event on completion preserve disable;

删除事件

drop event event_name;

About

花卷商城是一款基于 Springboot、Vue 的电商项目,前后端分离技术;

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published