# springboot-manage **Repository Path**: ArrayEdu/springboot-manage ## Basic Information - **Project Name**: springboot-manage - **Description**: 基于SpringBoot+Mybatis+Thymeleaf+Redis+MySQL开发的商品信息管理系统 - **Primary Language**: HTML - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-01-07 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 基于SpringBoot+Mybatis+Thymeleaf商品信息管理系统 ### 主要用到的技术: - 使用maven进行项目构建 - 使用Springboot+Mybatis搭建整个系统 - 使用Thymeleaf模板技术实现页面静态化 - 使用框架Bootstrap、JQuery开发前端界面   - 使用MySQL和MongoDB分别存储数据和图片 - 使用Redis缓存来提升数据库查询性能 ### 主要分为四个模块: - **用户管理模块** :用户登录、注册、密码找回(通过邮箱方式)、用户信息修改、密码修改 - **仪表盘管理模块** :展示当前月收入及其环比(环比=(当前月收入 - 上个月收入)/ 上个月收入)、当前月订单数及其环比、网站访问量、当前月退单数及其环比、以条形图的形式(使用jquery插件)展示最近30天每天的收入和订单数 - **商品管理模块** :商品增删改查、商品图片导入(存储在MongoDB)、导出商品报表、商品分类增删改查、库存查改,库存不足和积货提醒、商品回收和恢复。 - **订单管理模块** :订单查询查看、订单退款管理(查看和审批)、发货管理、物流公司管理、快递跟踪(调用快递100接口) ### 优化: 1. 通过使用AOP的方式计算并打印各种方法的耗时日志,有利于后续的代码优化 2. 通过拦截器实现反SQL注入,防止用户输入SQL敏感字符串 ### 问题:如何启动本系统? 1. 将sql文件在MySQL运行生成表和数据,启动Redis服务, MongoDB选择性开启(不开启时会报错但不影响系统正常访问,用到上传照片功能需要启动MongoDB) 2. 最后直接启动Application类后访问[http://localhost:8080/user/login](http://localhost:8080/user/login)就可以进入本系统! ## 预览效果 ![首页](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/board.png) ![商品管理](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/item.png) ![商品修改](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/edit.png) ![订单管理](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/order.png) ![物流公司](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/kuaidi.png) ![查询](https://github.com/zaiyunduan123/jesper_shop/blob/master/src/main/resources/static/img/shop-image/search.png) ## 附加-数据库设计 ```mysql 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='商品回收表'; ```