睿乐购电商课程设计

    技术2024-01-31  107

    睿乐购电商课程设计

    项目说明使用工具框架与技术前端说明项目说明数据库设计项目构建springboot 配置项目启动类

    项目说明

    该系列博客为2020年6月16日-2020年7月3日的软件工程课设二级项目源码地址

    使用工具

    vscodeideamysqlmavengit

    框架与技术

    springbootmybatisfastjsonswagger2admin

    前端说明

    前端是网上找到一个模板进行修改的前端框架技术:bootstrap,jquery本项目未使用视图模板,数据交互是通过ajax进行的

    项目说明

    数据库设计

    数据库设计未使用可视化界面创建,同时在vscode直接写sql完成的导入数据库使用的mysql命令 source DROP DATABASE IF EXISTS `db_es`; -- 创建睿乐购电商数据库 CREATE DATABASE IF NOT EXISTS `db_es`; USE db_es; -- 创建用户表 CREATE TABLE IF NOT EXISTS `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `username` varchar(50) NOT NULL COMMENT '用户名', `password` char(65) NOT NULL COMMENT '密码' , `phone` char(11) NOT NULL COMMENT '联系电话', `email` varchar(100) NOT NULL COMMENT '电子邮箱地址', `role` char(1) NOT NULL DEFAULT 'U' COMMENT '角色 U表示普通用户,A表示管理员,M表示会员', `question` varchar(255) NOT NULL COMMENT '密保问题', `answer` varchar(255) NOT NULL COMMENT '密码答案', `token` char(33) DEFAULT '' COMMENT 'token值,用来保存用户的登录信息', `create_time` datetime DEFAULT NOW() COMMENT '创建时间', `update_time` datetime DEFAULT NOW() COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 普通用户 的密码默认为123456 -- 普通用户 的密码默认为ysuadmin INSERT INTO user VALUES(1,'admin','aa5849d91bd8a38b32376fb4b83ec04567e92d2266aeec12efa5de3499cd49a7','12345678911','1255@qq.com','A','哪个学校的','ysu','',NOW(),NOW()); INSERT INTO user VALUES(2,'张三1号','8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92','12345678910','123456@qq.com','U','哪个学校的','ysu','',NOW(),NOW()); -- 类别表 CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类别id', `parent_id` int(11) NOT NULL COMMENT '父类别id', `name` varchar(50) NOT NULL COMMENT '类别名称', `statue` char NOT NULL DEFAULT '1' COMMENT '状态 1表示可用,0表示不可用', `create_time` datetime DEFAULT NOW() COMMENT '创建时间', `update_time` datetime DEFAULT NOW() COMMENT '更新时间' , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 商品表 CREATE TABLE IF NOT EXISTS `goods` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id', `category_id` int(11) NOT NULL COMMENT '类别id', `name` varchar(255) NOT NULL COMMENT '商品名称', `subtitle` varchar(255) NULL COMMENT '副标题', `main_image` varchar(255) NOT NULL COMMENT '主图地址', `sub_image` varchar(255) DEFAULT NULL COMMENT '子图地址' , `detail` varchar(255) NOT NULL DEFAULT '该商品没有详细介绍' COMMENT '商品详情', `price` decimal(20,2) NOT NULL COMMENT '商品价格' , `stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存量', `our_ratings` int NOT NULL DEFAULT 10 COMMENT '推荐指数', `postion` char(5) NOT NULL DEFAULT 'E' COMMENT '商品推荐位置 L表示轮播图 N表示新品 B表示畅销品 R表示推荐产品 P 表示促销品 F 特色产品 E其他', `status` char(1) NOT NULL DEFAULT 'S' COMMENT '商品状态 S表示在售 W表示下架 D表示删除' , `create_time` datetime DEFAULT NOW() COMMENT '创建时间', `update_time` datetime DEFAULT NOW() COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 购物车表 CREATE TABLE IF NOT EXISTS`shoppingCart` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车id', `user_id` int(11) NOT NULL COMMENT '购物车所属的用户id' , `product_id` int(11) NOT NULL COMMENT '购物车的商品id', `product_name` varchar(255) NOT NULL COMMENT '购物车的商品名称', `product_price` decimal(20,2) NOT NULL COMMENT '购物车的商品价格', `image` varchar(255) NOT NULL COMMENT '购物车的商品图片地址', `quantity` int(11) NOT NULL DEFAULT '1' COMMENT '购买数量' , `checked` char(1) NOT NULL DEFAULT '0' COMMENT '是否被选中 0表示未选中(表示在购物车),1表示选中(表示已加入订单)', `create_time` datetime DEFAULT NOW() COMMENT '创建时间' , `update_time` datetime DEFAULT NOW() COMMENT '更新时间' , PRIMARY KEY (`id`), KEY `user_id` (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `shoppingCart` VALUES(null,2,1,'戴尔(DELL)G5 英特尔酷睿i7电竞游戏本笔记本电脑',8299.00,'assets/images/product/product-13.jpg',1,'0',NOW(),NOW()); -- 订单表 CREATE TABLE IF NOT EXISTS `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单id', `order_no` char(32) NOT NULL COMMENT '订单编号: 系统的当前时间(Long)+用户id' , `user_id` int(11) NOT NULL COMMENT '用户id', `shipping_id` int(11) NOT NULL COMMENT '收获地址id' , `payment` decimal(20,2) NOT NULL COMMENT '实际付款金额', `payment_type` char(1) NOT NULL DEFAULT '0' COMMENT '付款类型 0表示货到付款 1表示支付宝 2表示微信', `postage` decimal(20,2) NOT NULL DEFAULT 0 COMMENT '邮费' , `status` char(1) NOT NULL DEFAULT '0' COMMENT '当前订单状态 0表示未付款 1表示已取消 2表示已付款 3表示已发货 4表示交易成功 5 表示交易关闭', `payment_time` datetime DEFAULT NULL COMMENT '付款时间', `send_time` datetime DEFAULT NULL COMMENT '发货时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间' , `close_time` datetime DEFAULT NULL COMMENT '关闭时间', `create_time` datetime DEFAULT NOW() COMMENT '创建时间', `update_time` datetime DEFAULT NOW() COMMENT '更新时间', PRIMARY KEY (`id`), KEY `order_no` (`order_no`) USING BTREE, KEY `user_id` (`order_no`,`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 订单明细表 CREATE TABLE IF NOT EXISTS `orderDetail` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单明细表id', `order_no` char(32) NOT NULL COMMENT '订单编号: 系统的当前时间(Long)+用户id', `user_id` int(11) NOT NULL COMMENT '用户id', `product_id` int(11) NOT NULL COMMENT '商品id' , `product_name` varchar(255) NOT NULL COMMENT '商品名称' , `product_image` varchar(255) NOT NULL COMMENT '商品图片地址', `current_unit_price` decimal(20,2) NOT NULL COMMENT '下单时的商品的价格', `quantity` int(11) NOT NULL DEFAULT 1 COMMENT '购买数量', `total_price` decimal(20,2) NOT NULL DEFAULT 0 COMMENT '购买该商品的总价格', `create_time` datetime DEFAULT NOW() COMMENT '创建时间' , `update_time` datetime DEFAULT NOW() COMMENT '更新时间' , PRIMARY KEY (`id`), KEY `order_no` (`order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 收获地址表 CREATE TABLE IF NOT EXISTS `address` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收获地址表id', `user_id` int(11) NOT NULL COMMENT '属于哪个用户的id' , `receiver_name` varchar(255) NOT NULL COMMENT '用户名', `receiver_phone` char(11) NOT NULL COMMENT '用户的手机号' , `receiver_province` varchar(30) NOT NULL COMMENT '收获地址的省份' , `receiver_city` varchar(30) NOT NULL COMMENT '收获地址的市', `receiver_district` varchar(30) NOT NULL COMMENT '收获地址的区县' , `receiver_address` varchar(255) NOT NULL COMMENT '收获的详细地址', `receiver_zip` char(6) NOT NULL COMMENT '邮编', `create_time` datetime DEFAULT NOW() COMMENT '创建时间' , `update_time` datetime DEFAULT NOW() COMMENT '更新时间' , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 张三1号 INSERT INTO `address` VALUES(1,2,'张三1号','12345678910','河北省','秦皇岛市','海港区','燕山大学西校区','066000',NOW(),NOW()); INSERT INTO `address` VALUES(2,2,'张三1号','12345678910','河北省','秦皇岛市','海港区','燕山大学东校区','066000',NOW(),NOW()); -- 支付表 CREATE TABLE IF NOT EXISTS `pay` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '支付表id', `user_id` int(11) NOT NULL COMMENT '用户的id', `order_no` char(32) NOT NULL COMMENT '支付的订单号' , `pay_platform` char(1) NOT NULL DEFAULT '0' COMMENT '付款类型 0表示货到付款 1表示支付宝 2表示微信', `platform_number` char(32) NOT NULL COMMENT '支付的流水号 yyyymmddhhmmss+用户id', `platform_status` char(1) NOT NULL DEFAULT '0' COMMENT '支付状态 0表示支付成功 1表示支付不成功', `create_time` datetime DEFAULT NOW() COMMENT '创建时间' , `update_time` datetime DEFAULT NOW() COMMENT '更新时间' , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    项目构建

    使用spring boot官网或者使用idea创建pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.15.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ysu</groupId> <artifactId>shop</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shop</name> <description>睿乐购商城</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!-- 数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!-- web启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- mybatis数据持久化层操作启动器 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <!-- 热部署相关工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <!-- mysql 连接工具 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- 测试工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- json解析工具 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.56</version> </dependency> <!--写接口文档的api--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <!-- <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> --> </dependency> <!-- <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.0-jre</version> </dependency> --> <!--界面支持--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- admin 客户端(Client 端)配置 --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.1.1</version> </dependency> <!-- 支付宝支付 --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.0.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--fork : 如果没有该项配置,肯定devtools不会起作用,即应用不会restart --> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project>

    springboot 配置

    server: port: 8082 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource username: root password: 654321 url: jdbc:mysql://localhost:3306/db_es?useSSL=false&serverTimezone=Asia/Shanghai boot: admin: client: url: - http://localhost:8084 management: endpoints: web: exposure: include: '*' endpoint: health: show-details: ALWAYS logging: level: com.ysu.shop.mapper: DEBUG com.ysu.shop.controller: DEBUG

    项目启动类

    package com.ysu.shop; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @MapperScan("com.ysu.shop.mapper") @EnableTransactionManagement public class ShopApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(ShopApplication.class); application.setBannerMode(Banner.Mode.OFF);//关闭 application.run(args); } }
    Processed: 0.011, SQL: 10