# 阶段一技术选型 — 基础设施与用户体系 --- ## 一、后端技术栈 ### 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 响应规范 ```json { "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 条