# turntable **Repository Path**: silinestorex/turntable ## Basic Information - **Project Name**: turntable - **Description**: 无聊转盘,一起来转一转。 本项目的后台采用GrowthStore实现,前端是微信小程序。功能比较简单。但用到了GrowthStore的RESTAPI插件实现了微信小程序的调用接口,以及调用了存储对象的CRUD方法来管理我的预制转盘等,以及自定义的SQL查询。 - **Primary Language**: 微信 - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2024-09-09 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 无聊转盘 > 一款简单有趣的微信小程序,帮助你在纠结时做出决定! ## 项目简介 无聊转盘是一个基于微信小程序的决策工具,通过转盘随机选择的方式帮助用户解决"中午吃什么"、"做什么"等选择困难问题。支持自定义转盘选项、保存模板、查看历史记录等功能。 ## 功能特性 - **转盘决策** - 支持最多17个选项的转盘随机抽取 - **自定义模板** - 创建、编辑、删除个人转盘模板 - **模板选中** - 快速切换不同转盘模板 - **历史记录** - 查看转盘决策历史 - **音效控制** - 转盘转动音效开关 - **快速转动** - 可选择快速/慢速转动模式 - **不重复抽取** - 支持不重复抽取已选项 - **概率模式** - 支持设置各选项的抽取概率 - **图片分享** - 生成分享图片保存到相册 ## 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | 微信小程序 | 基础库 3.6.0 | 前端框架 | | GrowthStore | - | 后端服务 | ## 项目结构 ``` turntable/ ├── api/ # API 接口层 │ └── api.js # 接口统一管理 ├── components/ # 自定义组件 │ ├── zhuanpan/ # 转盘核心组件 │ ├── dialog/ # 对话框组件 │ ├── menu/ # 菜单组件 │ └── common/paging/ # 分页组件 ├── images/ # 图片资源 ├── pages/ # 页面目录 │ ├── index/ # 首页(转盘主界面) │ ├── template/ # 模板列表页 │ │ └── edit/ # 模板编辑页 │ ├── record/ # 历史记录页 │ └── ceshi/ # 测试页面 ├── sql/ # 数据库脚本 │ └── turntable.sql # MySQL 建表脚本 ├── utils/ # 工具函数 │ ├── request.js # 网络请求封装 │ ├── user.js # 用户登录管理 │ ├── util.js # 通用工具函数 │ ├── responseStatus.js # 响应状态码 │ └── xiaojueding.js # 默认转盘数据 ├── app.js # 小程序入口 ├── app.json # 小程序配置 ├── app.wxss # 全局样式 ├── config.js # 配置文件 └── constants.js # 常量定义 ``` ## 数据库设计 ### 用户表 (xxx_user) 小程序登录用户表,需包含 `open_id` 字段。 ### 转盘模板表 (turntable_template) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | open_id | varchar(100) | 用户标识 | | name | varchar(255) | 模板名称 | | json_data | json | 模板选项数据 | | check_data | tinyint(1) | 是否选中 | | create_time | datetime(6) | 创建时间 | | update_time | datetime(6) | 更新时间 | ### 转盘记录表 (turntable_record) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | open_id | varchar(50) | 用户标识 | | name | varchar(255) | 转盘名称 | | json_data | json | 转盘数据 | | change_data | varchar(255) | 选中结果 | | create_time | datetime(6) | 创建时间 | | update_time | datetime(6) | 更新时间 | ## API 接口 项目基于 GrowthStore 后端服务,通过 REST API 进行数据交互: | 接口 | 方法 | 说明 | |------|------|------| | `/api/passoff/restapi/.../wx_get_openid/single` | POST | 获取微信 OpenID | | `/api/auth/login` | POST | 用户登录 | | `/api/passoff/compose/.../compose/register_user/single` | POST | 创建用户 | | `/api/object/.../TurntableRecord/insert` | POST | 保存记录 | | `/api/object/.../TurntableRecord/paged_query` | POST | 分页查询记录 | | `/api/object/.../TurntableTemplate/paged_query` | POST | 分页查询模板 | | `/api/object/.../TurntableTemplate/find_one` | POST | 查询单个模板 | | `/api/object/.../TurntableTemplate/upsert` | POST | 新增/编辑模板 | | `/api/object/.../TurntableTemplate/update_by` | POST | 批量更新模板 | | `/api/object/.../TurntableTemplate/delete` | POST | 删除模板 | ## 快速开始 ### 前置条件 1. 安装 [GrowthStore](https://storex.siline.cn) 后端服务 2. 安装 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html) ### 安装步骤 ```bash # 1. 克隆项目 git clone https://gitee.com/silinestorex/turntable.git # 2. 导入数据库 # 在 MySQL 中执行 sql/turntable.sql # 3. 配置后端服务 # 确保 GrowthStore 服务正常运行 # 4. 导入微信开发者工具 # 打开微信开发者工具,导入项目目录 ``` ### 配置说明 修改 `config.js` 配置文件: ```javascript module.exports = { appId: 'your_app_id', // 微信小程序 AppID baseUrl: "https://your-api.com/", // 后端服务地址 token: "access_token" // Token 存储键名 } ``` ## 页面说明 ### 首页 (pages/index) - 展示转盘主界面 - 显示当前选中的模板 - 支持开始转动、重置 - 支持生成分享图片 ### 模板页 (pages/template) - 展示用户创建的模板列表 - 支持新增、编辑、删除模板 - 支持选中模板快速切换 ### 编辑页 (pages/template/edit) - 创建/编辑转盘模板 - 支持添加/删除选项(最多17项) - 选项自动分配颜色 ### 记录页 (pages/record) - 展示转盘决策历史 - 按时间倒序排列 - 支持分页加载 ## 核心组件 ### zhuanpan 转盘组件 核心属性: - `awardsConfig` - 转盘配置数据 - `musicflg` - 音效开关 - `fastJuedin` - 快速转动开关 - `repeat` - 不重复抽取开关 - `probability` - 概率模式开关 - `size` - 转盘尺寸 核心事件: - `myData` - 初始化数据回调 - `myAwards` - 转动结果回调 - `startZhuan` - 开始/结束转动回调 核心方法: - `switchZhuanpan(data, flag)` - 切换转盘数据 - `reset()` - 重置转盘 ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 相关链接 - [GrowthStore 官网](https://storex.siline.cn) - [GrowthStore Gitee](https://gitee.com/silinestorex/GrowthStore) - [微信小程序文档](https://developers.weixin.qq.com/miniprogram/dev/framework/) ## 许可证 [MIT License](LICENSE)