long blogs

进一步有进一步惊喜


  • Home
  • Archive
  • Tags
  •  

© 2025 long

Theme Typography by Makito

Proudly published with Hexo

longSys相关文档

Posted at 2019-10-23 笔记 软件设计 

问题定义

个人资源管理平台

需求分析

需要一个软件平台来管理自己日益复杂和丰富的资源。包括但不限于个人文档、积累的电子书、下载的音乐、下载的视频教程,一些常用的功能。日记、笔记等。一些相关的人工智能的资源整合。如车标识别、orc等常用的接口。未来可能要接入物联网的相关设备、由于腾讯云的服务器的存储资源有限,未来需要将自己本地的文件外挂到该平台,即可以减小服务器的开销,还可以保护文档的私密性。服务器只做数据中转,而不是数据存储。服务器算力也有限,需要将算力分到本地外挂的设备。

一、文件管理需求

  • 该平台需要能够存储文件,解决U盘的不便携性。一些小的文档可以上传至该平台。当需要的时候可以上传和下载。大文件管理,由于设备原因,不可能将所有的文件上传到远端的服务器。所以需要一个功能,能够在该平台管理自己的本地的文件。包括,添加、删除、读取等常用功能。
  • 该平台的界面应该是非常友好的

二、图片管理需求

宅男喜欢二次元、现在积累了几个G的图片文件。但是很杂,该平台提供相册、分类的功能

  • 相册功能 将图片分类到相册中
  • 添加、删除、修改相册。
  • 查看图片和编辑分开。

三、音乐管理需求

音乐很多,想要有自己的音乐播放器,类似于网易云音乐那种。

  • 曲库 全部的音乐,可以搜索。一首歌可以放入很多的歌单中。
  • 歌单 将音乐分类,在管理界面可以添加、编辑、删除歌单
  • 上传音乐 上传的音乐会出现在曲库中,上传音乐的时候会添加相应的歌曲数据。

四、视频管理需求

视频很多、非常多。需要有效的管理
1、能够看视频(宽带问题,无法流畅的看视频)
2、用户能够根据名字搜索视频
3、用户能够创建自己的栏目,并且往里面添加视频(类似于blibli的收藏夹功能)
4、用户能够删除视频

五、日记和笔记的需求

笔记有很多成熟的产品,但是数据不可控。自己不想把数据放在他们的服务器上。所以需要一个支持多端编写的文档的功能。数据放在自己的数据库中。支持富文本和markdown格式的语法。

  • 文档的导入和导出 可以将数据库的中笔记文档导出pdf格式,保存备份在磁盘中。
  • 定期生成备份文件,后期可以调用多个网盘的api多端备份。

六、常用工具的需求

学习工作中有很多工具的需求,图片转文字、开发中json格式化、还有很多的开发手册。这些都是用得到的,并且自己已经实现了车标的识别并且建立了模型。可以将该功能整合
到平台中
1、二维码工具。能够根据字符串生成二维码,也能识别二维码为字符串。
2、车标识别工具。能够根据上传的图片识别相应的车标。
3、

七、物联网设备管理需求

未来自己会将家里的物联网的设备挂在该平台中,并且能够在该平台进行管理。空调、冰箱、台灯、电视机。自己梦想中的家。需要一个同一的管理平台,而不是各自为政。
添加设备,每个设备都有自己的id码,并且有相应的命令。

八、计划跟踪平台

用来记录自己的计划和执行情况,主要借鉴TODO List的功能
添加计划,一个计划会有开始时间、截止时间、完成时间(用户完成),具体内容,轻重缓急。
编辑、删除计划,只有未开始的计划才能编辑和删除
生成报表,可以按周、按月生成报表。记录计划的预计完成时间和实际完成时间,计算完成工作计划的轻重缓急的比例。

概要设计

详细设计

数据库设计

笔记管理

笔记本:t_notebook

字段 属性 说明
id bigint 主键
notebook_name varchar 笔记本名
notebook_description varchar 笔记本描述
create_id bigint 创建者id
created_time timestamp 创建时间戳
modify_time timestamp 修改时间戳
del tinyint 删除标记

笔记条目:t_notebook_item

字段 属性 说明
id bigint 主键
notebook_id bigint 主键
notebook_item_title varchar 笔记条目标题
notebook_item_content text 笔记条目内容
create_time timestamp 创建时间
modify_time timestamp 修改时间
del tinyint 删除标记

平台原型

后端实现进度

鉴权模块

  • shiro鉴权
    ….

用户模块

  • 用户登录接口

Request URL: 127.0.0.1:8080/Api/User/Login
Request Method:post
Request Body:

1
2
3
4
{
"username":"username",
"password":"password"
}

Response Body:

1
2
3
4
5
6
7
8
{
"code": 20000,
"version": null,
"message": "登录成功",
"data": {
"token": "c594ff92e47955527823259beafb5b2e65c26f7a233f8542736d1c1937b8bf442137a1aa1cc11b3aa1a0ba56aa1be6d91cb11ce03e9de58a48c608178ea1684de54b084713655ae8750010a822afb420ede8f6f92539da5c20d8a5434f82533b016768c39901ffe9f51ab82a83c9379193f624651a797131a4840581ddc855183260f708a41c7309"
}
}
  • 用户登出接口

Request URL: 127.0.0.1:8080/Api/User/Logout
Request Method: post
Request Body: null
Response Body:

1
2
3
4
5
6
{
"code": 20000,
"version": null,
"message": "请求成功",
"data": null
}
  • 获得用户信息

Request URL: 127.0.0.1:8080/Api/User/UserInfo?token=usertoken-token
Request Method: get
Response Body:

1
2
3
4
5
6
7
8
9
10
11
{
"version": null,
"message": "请求成功",
"code":20000,
"data":{
"roles":["admin"],
"introduction":"I am a super administrator",
"avatar":"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
"name":"Super Admin"
}
}
  • 用户管理
  • 权限角色管理
    ….

文件模块

  • 文件上传
  • 查询文件列表
  • 删除文件
  • 文件分类

图片模块

  • 创建相册
  • 更新相册
  • 添加图片至相册
  • 删除某个相册下的图片
  • 删除相册

音乐模块

  • 获得曲库列表
  • 获得歌单列表
  • 获得歌单对应的曲目
  • 添加新的歌曲
  • 修改歌曲
  • 删除歌曲
  • 添加新的歌单
  • 更新歌单
  • 删除歌单

在线笔记模块

  • 获得笔记列表
  • 获得特定笔记的内容
  • 添加新的笔记本
  • 为某个笔记本添加新的条目
  • 更新笔记本
  • 更新笔记本特定条目
  • 删除笔记本
  • 删除笔记本特定条目
  • 前端支持Markdown语法渲染

小说模块-转码

  • 添加新的解析模块
  • 变更解析模块
  • 删除解析模块

TODO模块

人工智能接口

  • 车标识别接口
  • 车标检测接口
  • 文字识别接口[待训练模型]
  • 人脸检测接口[待训练模型]

物联网设备

  • 查询所有设备状态
  • 添加新的设备
  • 删除设备
  • 控制特定的设备

前端流程设计

登录流程设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sequenceDiagram
participant user as 用户
participant front as 前端
participant backend as 后端

user->>front: 填写账号和密码
front->>front: 校验账号密码
front->>backend: 登录请求
backend->>backend: 处理登录请求
backend-->>front: 返回token
front->>front: 保存token
front->>front: 进入首页
front->>backend: 根据token获得用户数据
backend-->>front: 返回用户数据,包括用户名,头像,路由等
front->>front: 保存用户数据,处理路由数据动态渲染。
front->>front: 进入系统
front-->>user: 完成登录
请求接口
  • Api/User/Login
  • Api/User/GetInfo
  • Api/User/Logout

物联网相关

测试用例

数据流设计

大数据量数据传输TCP的有序也不能自己分割数据组
数据分割协议:

1
数据总长度(4bit) + 数据流

使用一个缓冲区先存数据,看是否已经可以拿回数据了。

Share 

 Previous post: 软件管理平台 Next post: book118预览文档下载 

© 2025 long

Theme Typography by Makito

Proudly published with Hexo