阶段一技术选型 — 基础设施与用户体系
一、后端技术栈
1.1 核心框架
| 技术 |
版本 |
用途 |
选型理由 |
| Java |
1.8.0_291 |
开发语言 |
客户环境限制,兼容性好 |
| Spring Boot |
1.5.9.RELEASE |
应用框架 |
成熟稳定,社区支持好 |
| MyBatis |
1.3.2 |
ORM 框架 |
灵活的 SQL 控制,XML 映射 |
| MySQL |
5.7+ |
数据库 |
客户环境限制,性能稳定 |
| Redis |
3.0+ |
缓存 |
高性能,支持多种数据结构 |
1.2 认证与安全
| 技术 |
版本 |
用途 |
选型理由 |
| JWT (jjwt) |
0.9.1 |
Token 认证 |
无状态,适合分布式 |
| BCrypt |
- |
密码加密 |
安全性高,自动加盐 |
| AES |
- |
手机号加密 |
对称加密,性能好 |
| SHA256 |
- |
手机号哈希 |
单向哈希,支持索引查询 |
1.3 文件处理
| 技术 |
版本 |
用途 |
选型理由 |
| 阿里云 OSS SDK |
3.15.1 |
文件存储 |
云服务稳定,CDN 加速 |
| 阿里云短信 SDK |
2.1.0 |
短信服务 |
国内服务稳定 |
| Apache POI |
3.17 |
Excel 处理 |
功能完整,社区活跃 |
1.4 工具库
| 技术 |
版本 |
用途 |
选型理由 |
| Jackson |
2.8.10 |
JSON 处理 |
Spring Boot 默认集成 |
| SLF4J + Logback |
1.7.25 |
日志框架 |
Spring Boot 默认集成 |
| Commons Lang3 |
3.5 |
工具类 |
字符串、日期等常用工具 |
二、前端技术栈
2.1 小程序端
| 技术 |
版本 |
用途 |
选型理由 |
| 微信小程序 |
基础库 ≥2.0 |
移动端框架 |
目标用户使用微信 |
| WXML |
- |
模板语言 |
微信小程序原生 |
| WXSS |
- |
样式语言 |
微信小程序原生 |
| JavaScript |
ES6 |
脚本语言 |
小程序支持 |
2.2 后台管理端
| 技术 |
版本 |
用途 |
选型理由 |
| Vue |
2.6.14 |
前端框架 |
成熟稳定,学习成本低 |
| Vue Router |
3.5.4 |
路由管理 |
Vue 官方路由 |
| Vuex |
3.6.2 |
状态管理 |
Vue 官方状态管理 |
| Element UI |
2.15.9 |
UI 组件库 |
组件丰富,文档完善 |
| Axios |
0.27.2 |
HTTP 客户端 |
支持 Promise,拦截器 |
| ECharts |
5.4.3 |
数据可视化 |
功能强大,图表丰富 |
三、开发工具
3.1 构建工具
| 工具 |
版本 |
用途 |
| Maven |
3.6.3 |
后端构建 |
| npm |
- |
前端依赖管理 |
| Vue CLI |
4.5.19 |
前端构建 |
3.2 版本控制
| 工具 |
用途 |
| Git |
版本控制 |
| Gogs |
代码仓库(自托管) |
3.3 开发环境
| 工具 |
用途 |
| JDK 1.8 |
Java 开发环境 |
| IntelliJ IDEA |
Java IDE |
| VS Code |
前端 IDE |
| 微信开发者工具 |
小程序开发调试 |
| Navicat/DBeaver |
数据库客户端 |
| Redis Desktop Manager |
Redis 客户端 |
四、部署环境
4.1 服务器配置(规划)
| 资源 |
配置 |
说明 |
| CPU |
2 核 |
足够支撑初期访问量 |
| 内存 |
4 GB |
Spring Boot + MySQL + Redis |
| 磁盘 |
50 GB |
系统 + 数据 + 日志 |
| 带宽 |
5 Mbps |
足够支撑初期访问量 |
4.2 软件环境
| 软件 |
版本 |
用途 |
| CentOS |
7.x |
操作系统 |
| Nginx |
1.18+ |
反向代理 |
| MySQL |
5.7 |
数据库 |
| Redis |
3.0+ |
缓存 |
| JDK |
1.8 |
Java 运行环境 |
4.3 云服务
| 服务 |
用途 |
配置 |
| 阿里云 OSS |
文件存储 |
私有读写,CORS 配置 |
| 阿里云 SMS |
短信服务 |
签名:洒渔用工 |
| 微信小程序 |
移动端 |
AppID 待申请 |
五、数据库设计规范
5.1 命名规范
- 表名: 小写字母 + 下划线,如
sys_user
- 字段名: 小写字母 + 下划线,如
user_name
- 主键:
id,自增
- 索引:
idx_ 前缀,如 idx_user_id
- 唯一索引:
uk_ 前缀,如 uk_phone_hash
5.2 字段规范
- 字符串: VARCHAR,长度按实际需求
- 数字: INT/BIGINT/DECIMAL
- 时间: DATETIME
- 状态: TINYINT,0/1/2
- 布尔: TINYINT,0 否 1 是
5.3 必备字段
每个业务表必须包含:
id — 主键
created_at — 创建时间
updated_at — 更新时间
六、接口设计规范
6.1 路径规范
- 小程序端:
/api/wx/{module}/{action}
- 后台管理端:
/api/admin/{module}/{action}
- 模块: 用户模块
user,系统模块 system,审核模块 audit,首页模块 home
6.2 请求规范
- GET: 查询操作,参数通过 URL 传递
- POST: 创建操作,参数通过 Body 传递
- PUT: 更新操作,参数通过 Body 传递
- DELETE: 删除操作
6.3 响应规范
{
"code": 200, // 状态码
"message": "success", // 状态描述
"data": {} // 业务数据
}
6.4 错误码规范
| 错误码 |
含义 |
说明 |
| 200 |
成功 |
- |
| 400 |
请求错误 |
参数校验失败 |
| 401 |
未认证 |
Token 无效或过期 |
| 403 |
禁止访问 |
无权限 |
| 404 |
未找到 |
资源不存在 |
| 500 |
服务器错误 |
内部异常 |
| 1001-1099 |
业务错误 |
自定义业务错误码 |
七、安全设计规范
7.1 认证安全
- Token: JWT 签名,有效期控制
- 密码: BCrypt 加密,强度校验
- 登录: 失败次数限制,锁定机制
7.2 数据安全
- 手机号: AES 加密存储,SHA256 哈希索引
- 敏感数据: 接口返回脱敏
- SQL 注入: MyBatis #{} 参数化
7.3 接口安全
- 权限控制: RBAC 模型
- 参数校验: 必填校验、类型校验、范围校验
- 防重放: Token 过期机制
八、性能设计规范
8.1 数据库性能
- 索引: 高频查询字段建立索引
- 连接池: 最大连接数 20
- 慢查询: 开启慢查询日志
8.2 缓存策略
- Token 黑名单: Redis 存储
- 验证码: Redis 存储,5 分钟过期
- 数据大屏: Redis 缓存,定时更新
8.3 接口性能
- 响应时间: ≤500ms(95%请求)
- 并发: ≥100 用户
- 分页: 默认每页 10 条,最大 100 条