一、前言:
最近在复习关于spring boot 的东西,无聊的复习过程真的是太无趣了,于是基于以前做过的一个项目来基于boot写一个简单的demo,有兴趣的同学可以来看看!同时欢迎大神们的指点与探讨。
项目名称:私人在线文档在线预览系统。英文名叫;pdsys(别见笑!!!!)
二、项目需求:
注册:新用户注册
登录:基于jwt的token验证登录,支持验证码
前台管理:个人端
1.支持各个用户的对于限定格式的文件的上传,下载,预览,删除。
2.文件格式限定类别包括:
(1)文档类:word,excel.ppt,txt
(2)音频类:mp3,wave,wmv
(3)视频类:mp4, asx, mpg, wmv, avi, mpeg, asf, 3gp, mov, flv, mkv
(4)图片类:jpg,png,gif,jepg等常见图片格式
3:支持断点续传,大文件上传
4:获取本人文档历史操作记录。
5:支持文件名称加密,文件存储路径加密
后台管理:管理员端
1.用户信息监测
2:系统日志监测
3:文件处理信息监测
难点概述:
关于各类型文档的在线预览方案
三、关于文件预览现有解决方案:
文档类处理:基于aspose-*.jar来进行文档转换,将所有文档转换成pdf形式来在h5标签中预览输出
音频类处理:基于h5标签的音频播放。
视频类:将ffmpeg第三方解析工具支持的视频格式转化成基于h264编码的mp4格式文件来在h5标签中进行预览。
如果视频格式ffmpeg不支持可以用mencode工具将视频转化成基于h264编码的MP4文件在h5中进行预览。
四、项目初始化的数据结构如下(只是一些基本性的数据结构设计)
用户信息表:sys_user_info
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
Id |
bigint |
1 |
否 |
自增主键,无符号 |
user_login_name |
char |
50 |
否 |
用户登录名 |
user_password |
char |
36 |
否 |
用户密码 |
user_name |
char |
50 |
是 |
用户姓名 |
user_email |
varchar |
100 |
是 |
用户邮箱 |
user_phone |
char |
15 |
是 |
用户电话或手机号 |
user_photo_path |
varchar |
255 |
是 |
用户头像上传路径 |
create_time |
datetime |
|
否 |
创建时间 |
create_user_id |
bigint |
1 |
是 |
创建人id,无符号 |
update_user_id |
bigint |
1 |
是 |
更新人id,无符号 |
update_time |
date_time |
|
是 |
更新时间 |
数据字典类型表:sys_dict_type
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id |
bigint |
1 |
否 |
自增主键,无符号 |
type |
varchar |
20 |
否 |
字典类型 |
description |
varchar |
50 |
否 |
字典类型描述 |
deleted_flag |
tinyint |
1 |
否 | 无符号 删除标识。1是0否 |
create_user_id |
bigint |
1 |
否 | 创建人 用户表自增主键,无符号 |
create_time |
datetime |
|
|
创建时间 |
update_user_id |
bigint |
1 |
是 | 更新人 用户表自增主键,无符号 |
update_time |
datetime |
|
|
更新时间 |
数据字典值表: sys_dict_value
结构说明
字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id | bigint | 1 | 否 | 表主键自增,无符号 |
dic_type_id | bigint | 1 | 否 | 字典类型id,无符号 |
label | char | 10 | 否 | 字典值标签 |
dict_value | tinyint | 1 | 否 | 字典值,无符号 |
deleted_flag | tinyint | 1 | 否 | 字典删除标志1是0否,无符号 |
create_user_id | bigint | 1 | 否 | 表主键自增,创建人,无符号 |
create_time | datetime |
| 否 | 创建时间 |
update_user_id | bigint | 1 | 是 | 更新人,无符号 |
update_time | datetime |
| 是 | 更新时间 |
文件基本信息表:file_base_info
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id |
bigint |
1 |
否 |
表主键自增 |
file_name |
varchar |
200 |
否 |
文件名称 |
file_path |
varchar |
255 |
否 |
文件存储路径 |
file_size |
varchar |
50 |
否 |
文件大小 |
file_type_dict_value |
tinyint |
1 |
否 |
文件类型id |
file_deleted_flag |
tinyint |
1 |
否 |
文件删除标识,1是0否 |
file_name_is_encryption |
tinyint |
1 |
是 | 文件名称加密标识 1是0否 |
file_path_is_encryption |
tinyint |
1 |
是 | 文件路径加密标识 1是0否 |
file_is_setting_keywords |
tinyint |
1 |
是 | 文件是否设置关键字 1是0否 |
file_upload_user_name |
char |
50 |
否 |
文件上传人姓名 |
file_upload_time |
datetime |
|
否 |
文件上传时间 |
file_upload_user_id |
bigint |
1 |
否 |
文件上传人id |
update_user_name |
char |
50 |
是 |
文件更新人姓名 |
update_time |
datetime |
|
是 |
文件更新时间 |
update_user_id |
bigint |
1 |
是 |
文件更新者id |
文件转换信息表:file_transcoding_info
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id |
bigint |
1 |
否 |
表主键id,自增 |
file_baseinfo_id |
bigint |
1 |
否 |
文件基本信息id,自增 |
file_transcoding_path |
varchar |
255 |
否 |
文件转码后的存储路径 |
create_time |
datetime |
|
否 |
创建时间 |
update_time |
datetime |
|
是 |
|
create_user_id |
bigint |
1 |
否 |
创建人id |
update_user_id |
bigint |
1 |
是 |
更新人id |
系统日志信息表:sys_log
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id | bigint | 1 | 否 | 自增主键 |
title | varchar | 50 | 否 | 操作的标题 |
remote_address | varchar | 15 | 是 | 远程Ip地址 |
user_agent | char | 50 | 是 | 浏览器类型 |
method | char | 5 | 是 | 访问方式 |
params | varchar | 255 | 是 | 访问参数 |
exception | varchar | 255 | 是 | 异常信息 |
create_user_id |
bigint |
1 |
否 |
创建人id |
create_time | datetime |
| 否 | 创建时间 |
request_url | varchar | 100 | 否 | 请求路径 |
系统业务操作日志表:sys_file_operator_log
结构说明 字段名称 |
值类型 |
大小 |
是否可以为空 |
字段描述 |
id | bigint | 1 | 否 | 自增主键 |
file_baseinfo_id | bigint |
| 否 | 文件基本信息id |
file_optype_dic_value | tinyint | 1 | 否 | 文件操作类型,字典获取 |
create_time | datetime |
| 否 | 创建时间 |
create_user_id | bigint | 1 | 否 | 创建人 |
注:以上表的左上角单元格都有对角线但是CSDN好像复制不过来
五、初步的基于restful 的api接口设计如下:
Restulful api接口预定义
系统访问根路径:rt/api/
版本:v1.0
模块名称 :系统用户
预计功能 | 请求url | 请求方式 |
注册(添加用户) | /sys/users | post |
登录 | /sys/login | get |
查询一个id查询用户 | /sys/users/{id } | get |
查询所有用户 | /sys/users/ | get |
修改一个用户根据id | /sys/users/{id} | put |
删除一个用户根据id | /sys/users /{id} | delete |
批量删除用户 | /sys/users/ | delete |
模块名称 :文件处理
预计功能 | 请求url | 请求方式 |
上传文件 | /files | post |
下载多个文件 | /files/download/ | get |
下载一个文件根据id | /files/download/{id} | get |
删除一个文件 | /files/{id} | delete |
删除多个文件 | /files | delete |
查询一个文件 | /files/{id} | get |
查询所有文件 | /files | get |
修改文件信息 | /files/{id} | put |
模块名称:业务日志
预计功能 | 请求url | 请求方式 |
添加日志 | /files/logs | post |
查询日志 | /files/logs | get |
查询某个文件下的日志 | /files/{id}/logs | get |
注:基于restful 的api接口原则上访问路径中是不能有动词的,此处的download作名词解释