软件设计文档 (SDD) - 摸鱼小网站 Summo-Sbmy
1. 项目概述
1.1 项目核心用途
这是一个摸鱼小网站项目,名为 summo-sbmy,主要提供休闲娱乐功能,包括:
- 热搜榜展示 - 显示各种平台的热门搜索内容
- 词云展示 - 可视化热点词汇分布
- 诗句展示 - 提供每日诗词内容
- 假期日历 - 展示中国节假日安排
- 访客记录 - 记录网站访问情况
1.2 核心功能及服务节点
后端服务节点
- summo-sbmy-start: 主启动应用,包含Web API接口
- summo-sbmy-common: 通用工具模块
- summo-sbmy-dao: 数据访问层模块
- summo-sbmy-service: 业务逻辑服务层
- summo-sbmy-web: Web控制器层
- summo-sbmy-job: 定时任务模块
前端服务节点
- summo-sbmy-front-web: PC端和移动端Web界面
- summo-sbmy-front-mp: 微信小程序前端
1.3 技术栈及版本
| 组件 | 版本 |
|---|---|
| JDK | <TODO-JDK版本> |
| Spring Boot | <TODO-SpringBoot版本> |
| Spring Framework | <TODO-SpringFramework版本> |
| MyBatis | <TODO-MyBatis版本> |
| MySQL | <TODO-MySQL版本> |
| Vue.js | <TODO-Vue.js版本> |
| Node.js | <TODO-Node.js版本> |
2. 系统架构
2.1 模块划分
后端模块
- Common Layer: [summo-sbmy-common](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-common/pom.xml) - 通用工具和基础类
- DAO Layer: [summo-sbmy-dao](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-dao/pom.xml) - 数据访问层
- Service Layer: [summo-sbmy-service](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-service/pom.xml) - 业务逻辑层
- Web Layer: [summo-sbmy-web](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-web/pom.xml) - 控制器层
- Job Layer: [summo-sbmy-job](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-job/pom.xml) - 定时任务
- Start Module: [summo-sbmy-start](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-start/pom.xml) - 应用启动模块
前端模块
- PC/Web Frontend: [summo-sbmy-front-web](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/front/summo-sbmy-front-web/package.json) - PC端Vue应用
- Mini Program Frontend: [summo-sbmy-front-mp](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/front/summo-sbmy-front-mp/package.json) - 小程序前端
2.2 目录结构说明
.
├── db # 数据库脚本目录
│ ├── t_sbmy_hot_search.sql # 热搜数据表结构
│ ├── t_sbmy_sys_config.sql # 系统配置表结构
│ └── t_sbmy_visit_log.sql # 访问日志表结构
├── front # 前端项目目录
│ ├── summo-sbmy-front-mp # 小程序前端
│ └── summo-sbmy-front-web # PC/Web前端
├── summo-sbmy-common # 通用模块
│ └── src/main/java/com/summo/sbmy/common
├── summo-sbmy-dao # 数据访问层
│ └── src/main/java/com/summo/sbmy/dao
├── summo-sbmy-job # 定时任务模块
│ └── src/main/java/com/summo/sbmy/job
├── summo-sbmy-service # 业务服务层
│ └── src/main/java/com/summo/sbmy/service
├── summo-sbmy-start # 启动模块
│ └── src/main/java/com/summo/sbmy
├── summo-sbmy-web # Web控制器层
│ └── src/main/java/com/summo/sbmy/web
└── pom.xml # 项目总构建配置
2.3 组件依赖关系
Frontend Web
Backend API
Frontend MP
Summo-Sbmy-Start
Summo-Sbmy-Web
Summo-Sbmy-Service
Summo-Sbmy-Dao
Summo-Sbmy-Common
Summo-Sbmy-Job
Database
Cache/Redis
3. 核心模块设计
3.1 Summo-Sbmy-Start 模块
- 入口类: [com.summo.sbmy.Application.java](file:///d:/workspace/%E6%91%B8%E9%B1%BC%E5%B0%8F%E7%BD%91%E7%AB%99/summo-sbmy/summo-sbmy-start/src/main/java/com/summo/sbmy/Application.java)
- 核心类/接口/方法 :
- public class Application
- public static void main(String[] args)
- 职责: 项目的启动入口,初始化Spring Boot应用
3.2 Summo-Sbmy-Service 模块
- 核心类/接口/方法 :
- public class SbmyHotSearchService - 处理热搜相关业务
- public class SbmyVisitLogService - 处理访问日志业务
- public class SbmySysConfigService - 处理系统配置业务
- public class PoetryService - 处理诗词业务
- public class ChinaHolidayService - 处理假期日历业务
- public class SentenceService - 处理句子/语录业务
- 职责: 实现业务逻辑处理,包括热搜、访问记录、配置管理、诗词、假期等功能
3.3 Summo-Sbmy-Dao 模块
- 核心类/接口/方法 :
- interface SbmyHotSearchMapper - 热搜数据访问接口
- interface SbmySysConfigMapper - 系统配置数据访问接口
- interface SbmyVisitLogMapper - 访问日志数据访问接口
- class AbstractBaseDO - 基础数据对象
- class MetaObjectHandlerConfig - 元对象处理器配置
- 职责: 提供数据访问功能,操作数据库中的相关表
3.4 Summo-Sbmy-Web 模块
- 职责: 提供Web API接口,处理HTTP请求和响应
3.5 Summo-Sbmy-Common 模块
- 职责: 提供通用工具类、枚举、基础模型、结果封装等通用功能
4. 数据模型设计
4.1 实体/数据表结构
| 实体类/数据表 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| SbmyHotSearchEntity | id | Long | 主键ID |
| platform | String | 平台名称 | |
| title | String | 热搜标题 | |
| url | String | 链接地址 | |
| hotValue | Integer | 热度值 | |
| status | Integer | 状态 | |
| createTime | Date | 创建时间 | |
| updateTime | Date | 更新时间 | |
| SbmySysConfigEntity | id | Long | 主键ID |
| configKey | String | 配置键 | |
| configValue | String | 配置值 | |
| description | String | 配置描述 | |
| status | Integer | 状态 | |
| createTime | Date | 创建时间 | |
| updateTime | Date | 更新时间 | |
| SbmyVisitLogEntity | id | Long | 主键ID |
| ip | String | IP地址 | |
| userAgent | String | 用户代理 | |
| referer | String | 来源页面 | |
| url | String | 访问URL | |
| createTime | Date | 创建时间 |
4.2 关联关系
- <TODO-实体表关联关系>
5. 核心业务流程
5.1 热搜数据获取流程
- 前端发起热搜数据请求
- Web层接收请求并调用Service层
- Service层查询数据库获取热搜数据
- Service层处理数据并返回给Web层
- Web层将数据返回给前端
5.2 访问日志记录流程
- 用户访问网站
- 拦截器或AOP记录访问信息
- Service层保存访问日志到数据库
Database DAO Service Controller 前端 Database DAO Service Controller 前端 请求热搜数据 调用业务方法 查询数据 执行SQL 返回数据 返回数据 返回处理后数据 返回JSON数据
6. 接口设计
| 路径 | 请求方法 | 入参 | 出参 | 说明 |
|---|---|---|---|---|
| /api/hot-search/list | GET | 无 | HotSearchDTO[] | 获取热搜列表 |
| /api/visit-log/create | POST | VisitLogDTO | Result | 记录访问日志 |
| /api/sys-config/get | GET | ConfigQueryDTO | SysConfigDTO | 获取系统配置 |
| /api/poetry/random | GET | 无 | PoetryDTO | 获取随机诗词 |
| /api/holiday/current | GET | 无 | HolidayDTO | 获取当前假期信息 |
| /api/word-cloud/data | GET | 无 | WordCloudDTO[] | 获取词云数据 |
7. 部署指南
7.1 环境依赖
- JDK版本: <TODO-JDK版本>
- Maven版本: <TODO-Maven版本>
- 数据库: MySQL <TODO-MySQL版本>
- 缓存: Redis <TODO-Redis版本>
- 应用服务器: Tomcat <TODO-Tomcat版本>
7.2 启动命令
bash
# 构建项目
mvn clean package
# 启动应用
java -jar summo-sbmy-start/target/summo-sbmy.jar
# 或使用Spring Boot插件
mvn spring-boot:run
7.3 配置文件说明
- application.properties/application.yml: 主配置文件,包含数据库连接、服务端口等配置
- application-dev.properties: 开发环境配置
- application-publish.properties: 生产环境配置
- logback-spring.xml: 日志配置文件
8. 异常处理与安全设计
8.1 异常处理
- 全局异常处理器: <TODO-ControllerAdvice类名>
- 自定义异常类: <TODO-自定义异常类>
- 状态码规范 :
- 200: 成功
- 400: 参数错误
- 401: 未授权
- 404: 资源不存在
- 500: 服务器错误
8.2 安全设计
- 认证授权: <TODO-认证授权方案>
- 接口防护: <TODO-接口防护措施>
- 数据加密: <TODO-数据加密方式>
- 限流措施: <TODO-限流配置>
- 防攻击措施: <TODO-防攻击实现>
注意 : 文档中标注 <TODO> 的部分表示在现有代码中未能找到相关信息,需要进一步补充完善。