基于SpringBoot+Mybatis+Thymeleaf商品信息管理系统
主要用到的技术:
- 使用maven进行项目构建
- 使用Springboot+Mybatis搭建整个系统
- 使用Thymeleaf模板技术实现页面静态化
- 使用框架Bootstrap、JQuery开发前端界面
- 使用MySQL和MongoDB分别存储数据和图片
- 使用Redis缓存来提升数据库查询性能
主要分为四个模块:
-
用户管理模块 :用户登录、注册、密码找回(通过邮箱方式)、用户信息修改、密码修改
-
仪表盘管理模块 :展示当前月收入及其环比(环比=(当前月收入 - 上个月收入)/ 上个月收入)、当前月订单数及其环比、网站访问量、当前月退单数及其环比、以条形图的形式(使用jquery插件)展示最近30天每天的收入和订单数
-
商品管理模块 :商品增删改查、商品图片导入(存储在MongoDB)、导出商品报表、商品分类增删改查、库存查改,库存不足和积货提醒、商品回收和恢复。
-
订单管理模块 :订单查询查看、订单退款管理(查看和审批)、发货管理、物流公司管理、快递跟踪(调用快递100接口)
优化:
- 通过使用AOP的方式计算并打印各种方法的耗时日志,有利于后续的代码优化
- 通过拦截器实现反SQL注入,防止用户输入SQL敏感字符串
问题:如何启动本系统?
- 将sql文件在MySQL运行生成表和数据,启动Redis服务, MongoDB选择性开启(不开启时会报错但不影响系统正常访问,用到上传照片功能需要启动MongoDB)
- 最后直接启动Application类后访问http://localhost:8080/user/login就可以进入本系统!
预览效果
附加-数据库设计
DROP TABLE IF EXISTS `kuaidi100_delivery`;
CREATE TABLE `kuaidi100_delivery` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`delivery_name` varchar(255) NOT NULL,
`delivery_code` varchar(255) NOT NULL,
`delivery_sort` varchar(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=147 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`realName` varchar(45) DEFAULT NULL,
`business` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`headPicture` varchar(45) DEFAULT NULL,
`addDate` date DEFAULT NULL,
`updateDate` date DEFAULT NULL,
`state` int(11) DEFAULT '0' COMMENT '1:正常\n2:冻结\n3:删除',
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`userName`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_category`;
CREATE TABLE `tb_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
`parent_id` bigint(20) DEFAULT NULL COMMENT '父类目ID=0时,代表的是一级的类目',
`name` varchar(50) DEFAULT NULL COMMENT '分类名称',
`status` int(1) DEFAULT '1' COMMENT '状态。可选值:1(正常),2(删除)',
`sort_order` int(4) DEFAULT NULL COMMENT '排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数',
`is_parent` tinyint(1) DEFAULT '1' COMMENT '该类目是否为父类目,1为true,0为false',
`created` datetime DEFAULT NULL COMMENT '创建时间',
`updated` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`,`status`) USING BTREE,
KEY `sort_order` (`sort_order`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=563 DEFAULT CHARSET=utf8 COMMENT='内容分类';
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
`id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
`title` varchar(100) NOT NULL COMMENT '商品标题',
`sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
`price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
`num` int(10) NOT NULL COMMENT '库存数量',
`barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
`image` varchar(500) DEFAULT NULL COMMENT '商品图片',
`cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
`created` datetime NOT NULL COMMENT '创建时间',
`updated` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
KEY `status` (`status`),
KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';
DROP TABLE IF EXISTS `tb_order`;
CREATE TABLE `tb_order` (
`order_id` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '订单id',
`payment` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分',
`payment_type` int(2) DEFAULT NULL COMMENT '支付类型,1、在线支付,2、货到付款',
`post_fee` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分',
`status` int(10) DEFAULT NULL COMMENT '状态:1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭',
`create_time` datetime DEFAULT NULL COMMENT '订单创建时间',
`update_time` datetime DEFAULT NULL COMMENT '订单更新时间',
`payment_time` datetime DEFAULT NULL COMMENT '付款时间',
`consign_time` datetime DEFAULT NULL COMMENT '发货时间',
`end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
`close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
`shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称',
`shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言',
`buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称',
`buyer_rate` int(2) DEFAULT NULL COMMENT '买家是否已经评价',
`refundStatus` int(2) DEFAULT NULL,
`refundReason` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`isRefund` int(2) DEFAULT NULL,
PRIMARY KEY (`order_id`),
KEY `create_time` (`create_time`) USING BTREE,
KEY `buyer_nick` (`buyer_nick`) USING BTREE,
KEY `status` (`status`) USING BTREE,
KEY `payment_type` (`payment_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `tb_order_item`;
CREATE TABLE `tb_order_item` (
`id` varchar(20) COLLATE utf8_bin NOT NULL,
`item_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '商品id',
`order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id',
`num` int(10) DEFAULT NULL COMMENT '商品购买数量',
`title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品标题',
`price` bigint(50) DEFAULT NULL COMMENT '商品单价',
`total_fee` bigint(50) DEFAULT NULL COMMENT '商品总金额',
`pic_path` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品图片地址',
PRIMARY KEY (`id`),
KEY `item_id` (`item_id`) USING BTREE,
KEY `order_id` (`order_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
DROP TABLE IF EXISTS `tb_order_shipping`;
CREATE TABLE `tb_order_shipping` (
`order_id` varchar(50) NOT NULL COMMENT '订单ID',
`receiver_name` varchar(20) DEFAULT NULL COMMENT '收货人全名',
`receiver_phone` varchar(20) DEFAULT NULL COMMENT '固定电话',
`receiver_mobile` varchar(30) DEFAULT NULL COMMENT '移动电话',
`receiver_state` varchar(10) DEFAULT NULL COMMENT '省份',
`receiver_city` varchar(10) DEFAULT NULL COMMENT '城市',
`receiver_district` varchar(20) DEFAULT NULL COMMENT '区/县',
`receiver_address` varchar(200) DEFAULT NULL COMMENT '收货地址,如:xx路xx号',
`receiver_zip` varchar(6) DEFAULT NULL COMMENT '邮政编码,如:310001',
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `tb_re_item`;
CREATE TABLE `tb_re_item` (
`id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
`title` varchar(100) NOT NULL COMMENT '商品标题',
`sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
`price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
`num` int(10) NOT NULL COMMENT '库存数量',
`barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
`image` varchar(500) DEFAULT NULL COMMENT '商品图片',
`cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
`recovered` datetime NOT NULL COMMENT '回收时间',
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
KEY `status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品回收表';