前言:一个简易版的网上书城介绍,主要是对所学知识点的一个综合应用,熟悉MVC的开发流程。
一、项目需求
1、前端
①首页(书籍展示,分类展示)
②用户登录\注册(七天免登陆,记住密码)
③书籍查询(类别查询,关键字查询)
④购物车
⑤订单管理(订单新增,订单查询,撤单,签收)
2、后台
①管理员登录
②书籍管理(新增、未上架、删除、修改、图片上传、上架)
二、数据库表设计
书本类别表t_book_category
列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|
book_category_id | bigint | N | 书本类别ID,自动增长 | |
book_category_name | varchar | 50 | N | 书本类别名称 |
文件表t_doc
列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|
id | bigint | N | 文件ID:非标识列,为简化开发直接取系统当前的毫秒数作为主键的值 | |
file_name | varchar | 50 | N | 文件名 |
mime | varchar | 50 | N | 文件的mime类型 |
书籍表 t_book
列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|
book_id | bigint | N | 书本类别ID,标识列 | |
book_name | varchar | 50 | N | 书名 |
book_name_pinyin | varchar | 50 | N | 书名拼音:该值有工具类PinYinUtil根据书籍名字计算得到,无需手动输入 |
book_category_id | bigint | N | 书本类别ID:外键,引用t_book_category(book_category_id) | |
book_author | varchar | 256 | N | 作者 |
book_price | float | N | 价格:与钱有关,精度要求高,float_DECIMAL,对应的java类型:java.math.BigDecimal | |
book_image | bigint | Y | 图片:外键,引用t_doc(id),insert=false 注:图书只有上传图片后才修改状态为 2 已上架 因为没做文件上传功能,所以封面直接使用文件ID即可 | |
publishing | varchar | 50 | N | 出版社 |
book_desc | varchar | 1024 | N | 简介 |
book_state | int | N | 书本状态:1 未上架 2 已上架 3 已下架 默认值1 insert=false 注: 只有未上架图书才能删除,已上架图书不能删除,只能下架 | |
deploy_datetime | datetime | Y | 上架日期时间: insert=false,java.sql.Timestamp 注:即首页的最新上架 | |
sales_volume | int | N | 销量:默认值0 insert=false 注:即首页的热销图书,另外客户签收后,根据所售图书的数量更新此字段的值 |
注:insert=false表示此字段不允许插入操作,update=false表示此字段不允许修改操作 insert=false,update=false表示此字段为只读的
用户表 t_user
列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|
user_id | bigint | N | 用户ID:标识列 | |
user_name | varchar | 10 | N | 用户名:唯一键,登陆时使用 |
user_pwd | varchar | 32 | N | 用户密码:长度6~10位,MD5加密 |
user_type | int | N | 用户类型:1 管理员 2 普通用户 注:管理员是直接添加到数据库的,注册时只能注册普通用户 |
订单表 t_order
序 | 列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|---|
1 | order_id | bigint | N | 订单ID:非标识列,为简化开发直接取系统当前的毫秒数作为主键的值 | |
2 | user_id | bigint | N | 用户ID:外键,引用t_user(user_id) 注:即当前下单的客户 | |
3 | order_datetime | datetime | N | 下单日期时间:默认为系统当前时间 insert=false,update=false | |
4 | consignee | varchar | 50 | N | 收货人 |
5 | phone | varchar | 50 | N | 收货人电话 |
6 | postalcode | varchar | 50 | N | 收货人邮编 |
7 | address | varchar | 50 | N | 收货人地址 |
8 | send_type | int | N | 发货方式:1 平邮 2 快递 | |
9 | send_datetime | datetime | Y | 发货日期时间:insert=false | |
10 | order_price | DECIMAL | N | 订单总价 | |
11 | order_state | int | N | 订单状态:1 未发货 2 已发货 3 已签收 4 已撤单 默认值1 insert=false 注:未发货的订单才能点击取消(即做一个删除操作同时还要删除订单项表对应的记录) | |
注:insert=false表示此字段不允许插入操作,update=false表示此字段不允许修改操作 insert=false,update=false表示此字段为只读的 |
订单项表 t_order_item
序 | 列名 | 数据类型 | 长度 | 允许空 | 说明 |
---|---|---|---|---|---|
1 | order_item_id | bigint | N | 订单项ID:标识列 | |
2 | order_id | bigint | N | 订单ID:外键,引用t_order(order_id) | |
3 | book_id | int | N | 书籍ID:外键,引用t_book(book_id) | |
4 | quantity | int | N | 数量 |
三、技术选择
后台管理员界面:layui,前端界面:layui。后台:自定义MVC框架。