# Go Desk 需求文档 > **文档版本**:v1.0 > **创建时间**:2025-12-29 > **维护者**:JueChen > **状态**:已确定 ## 1. 产品概述 ### 1.1 产品定位 Go Desk 是基于 Wails 框架开发的桌面应用程序,用于**测试验证技术栈**。通过实现用户查询功能,验证以下技术能力: - 打包和构建流程 - 前后端交互机制 - 与系统资源交互(数据库连接、文件操作等) - 跨平台桌面应用开发 ### 1.2 技术栈 - **后端**:Go v1.25.4 - **框架**:Wails v2 - **前端**:Vue 3 + Arco Design Vue - **构建工具**:Vite - **数据库**:MySQL (lab_dev) ## 2. 功能需求 ### 2.1 核心功能:用户查询展示 #### 功能描述 从 MySQL 数据库 `lab_dev` 的 `member_info` 表中查询用户信息,并在桌面应用中展示。参考 `lab-admin` 和 `lab-api` 中的用户管理功能。 #### 数据表结构 - **表名**:`member_info` - **主要字段**: - `memberid`:用户ID(主键) - `membername`:姓名 - `account`:账号 - `contactphone`:联系电话 - `organid`:所属机构ID - `organname`:所属机构名称(需关联查询) - `role`:角色(需关联 `sys_member_role` 表获取角色名称) - `status`:状态(1-正常,2-停用,3-删除) - `createtime`:创建时间 - `updatetime`:修改时间 #### 查询功能 - [ ] 用户列表展示(表格形式) - [ ] 关键字搜索(支持姓名、账号、电话模糊查询) - [ ] 状态筛选(全部/正常/停用/已删除) - [ ] 角色筛选(需关联查询角色表) - [ ] 机构筛选(需关联查询机构表) - [ ] 分页显示 - [ ] 排序功能(按创建时间、用户ID等) #### 展示字段 - [ ] 编号(memberid) - [ ] 姓名(membername) - [ ] 账号(account) - [ ] 联系电话(contactphone) - [ ] 所属机构(organname) - [ ] 角色(角色名称,需关联查询) - [ ] 状态(状态标签显示) - [ ] 创建时间(createtime) - [ ] 修改时间(updatetime) #### 界面要求 - [ ] 使用 Arco Design Vue 组件库 - [ ] 查询表单(关键字、状态、角色、机构筛选) - [ ] 数据表格展示 - [ ] 分页组件 - [ ] 状态标签(正常-绿色,停用-橙色,删除-灰色) ### 2.2 基础功能 - [x] 应用启动和窗口管理 - [x] 前后端通信机制 - [x] 数据库连接(MySQL lab_dev) - [ ] 错误处理和日志记录 - [ ] 数据库连接配置管理 ### 2.3 界面需求 - [ ] 主界面布局(查询区域 + 表格区域) - [ ] 使用 Arco 基础样式,避免过度自定义 - [ ] 响应式布局适配 ## 3. 非功能需求 ### 3.1 性能要求 - [ ] 启动时间:< 3秒 - [ ] 查询响应:< 500ms - [ ] 内存占用:< 200MB ### 3.2 兼容性要求 - [ ] Windows 10/11(优先) - [ ] macOS(后续考虑) - [ ] Linux(后续考虑) ### 3.3 用户体验要求 - [ ] 界面简洁易用 - [ ] 查询操作流畅 - [ ] 错误提示友好 - [ ] 加载状态提示 ## 4. 数据需求 ### 4.1 数据库连接 - **数据库**:MySQL - **数据库名**:lab_dev - **连接信息**: - Host: localhost - Port: 3306 - User: root - Password: 123456 - **连接池配置**: - MaxOpenConns: 25 - MaxIdleConns: 5 - ConnMaxLifetime: 300秒 ### 4.2 数据查询 - [ ] 直接查询 `member_info` 表 - [ ] 关联查询机构表获取机构名称 - [ ] 关联查询 `sys_member_role` 表获取角色信息 - [ ] 支持分页查询(limit/offset) - [ ] 支持排序(按字段排序) ### 4.3 数据交互 - [ ] 前端通过 `window.go.main` 调用 Go 方法 - [ ] Go 方法返回 JSON 格式数据 - [ ] 查询参数:关键字、状态、角色、机构、分页信息 - [ ] 返回数据:用户列表、总数 ## 5. 开发优先级 ### 阶段一:最小可用版本(MVP) - [x] 项目初始化和框架搭建 - [ ] 数据库连接配置 - [ ] Go 后端:用户查询接口 - [ ] 前端:用户列表展示 - [ ] 基础查询功能(关键字搜索) ### 阶段二:功能完善 - [ ] 筛选功能(状态、角色、机构) - [ ] 分页功能 - [ ] 排序功能 - [ ] 关联查询(机构名称、角色名称) - [ ] 界面优化 ### 阶段三:增强功能(后续考虑) - [ ] 用户修改功能 - [ ] 用户新增功能 - [ ] 用户删除功能 - [ ] 数据导出功能 - [ ] 性能优化 ## 6. 技术实现要点 ### 6.1 Go 后端 - 使用 GORM 连接 MySQL - 定义 `MemberInfo` 结构体(参考 `ops-kit/internal/model/member_info.go`) - 实现查询方法,参数不超过 3 个 - 返回 JSON 格式数据 ### 6.2 前端 - 使用 Arco Design Vue 组件 - 表格组件:`a-table` - 查询表单:`a-form` + `a-input` + `a-select` - 分页组件:`a-pagination` ### 6.3 数据库查询 - 基础查询:`SELECT * FROM member_info WHERE ...` - 关联查询机构:`LEFT JOIN organ_info ON member_info.organid = organ_info.organid` - 关联查询角色:`LEFT JOIN sys_member_role ON member_info.memberid = sys_member_role.memberid` ## 7. 参考实现 - **前端参考**:`lab-admin/src/views/member/index.vue` - **后端参考**:`lab-api/src/main/java/cn/casehub/member/MemberService.java` - **数据模型参考**:`ops-kit/internal/model/member_info.go` - **数据库连接参考**:`ops-kit/internal/database/db.go` ## 8. 项目定位说明 ### 8.1 应用用途 **测试验证技术栈** - 通过实际项目验证 Wails + Go + Arco-Vue 技术栈的可行性 ### 8.2 目标用户 **开发者自己** - 技术型验证项目,用于学习和验证技术能力 ### 8.3 核心验证点 1. **打包构建**:验证 Wails 的打包和构建流程 2. **前后端交互**:验证 Go 后端与 Vue 前端的通信机制 3. **系统资源交互**:验证数据库连接、文件操作等系统资源访问能力 4. **跨平台能力**:验证 Windows/macOS/Linux 平台兼容性 ### 8.4 数据来源 - **数据库**:MySQL lab_dev(本地数据库) - **数据表**:member_info(用户表) - **连接方式**:直接连接,无需外部服务 ### 8.5 离线能力 - 支持离线使用(连接本地数据库) - 不依赖网络服务 ### 8.6 更新机制评估 **复杂度评估**:中等复杂度,实现难度不高 **实现方式**: 1. **简单方案**(推荐用于验证): - 应用启动时检查版本号(从配置文件或服务器获取) - 提示用户有新版本,引导手动下载更新 - **复杂度**:低,实现简单 2. **完整方案**(如需自动更新): - 版本检查:启动时请求服务器获取最新版本信息 - 下载更新:后台下载更新包(zip/exe) - 自动替换:下载完成后替换旧版本,重启应用 - **复杂度**:中等,需要处理: - 版本管理(版本号对比) - 文件下载(断点续传、进度显示) - 文件替换(Windows 需要关闭进程后替换) - 错误处理(下载失败、替换失败等) **推荐**: - **当前阶段**:暂不实现自动更新,手动更新即可 - **后续考虑**:如需实现,建议使用第三方库(如 `wails-updater` 或自行实现简单版本检查) **参考实现**: - Wails 社区有相关更新方案示例 - 可以参考 Electron 的更新机制设计思路 --- **当前阶段**:实现用户查询展示功能,修改维护功能后续考虑。