大家好我是小锋老师最近更新《2027版 小店会员管理微信小程序系统视频教程(适合理发店宠物店等各种小店)使用 云函数 云数据库商业级项目实战Cursor Calude AI编程 2小时轻松搞定》专辑感谢大家支持。本课程主要结合AI编程 Cursor 实现一个开源商业项目是-小店会员管理微信小程序系统使用微信云函数和云数据库。讲解内容包括需求分析架构和设计利用Cursor AI编程实现Plan沟通项目方案Agent生成项目Agent修复bug和完善功能。视频教程课件源码打包下载 链接https://pan.baidu.com/s/1Oo7dtFf_Zt7hJyl6aYX6TA?pwd1234提取码1234小店会员管理微信小程序系统视频教程(适合理发店宠物店等各种小店)使用 云函数 云数据库商业级项目实战Cursor Calude AI编程 2小时轻松搞定项目演示以及需求分析小店会员微信小程序开发需求一、技术栈微信小程序云开发纯云函数 云数据库二、用户角色VIP 会员普通用户管理员通过数据库配置的多个管理员老板、店长等支持多 openid三、TabBar 页面结构1. “关于我们”页面门店轮播图管理员后台可动态编辑会员余额显示充值按钮 → 跳转至新页面展示老板微信二维码联系电话导航地图地址由管理员配置店铺介绍区域支持富文本管理员可动态编辑业务介绍、价格等2. “消费记录”页面展示当前会员的消费记录项目、金额、时间3. “个人中心”页面显示/编辑姓名可编辑绑定手机号首次登录强制授权绑定后不可编辑显示余额会员编号仅在首次充值后显示未充值隐藏四、管理员功能仅在管理员用户 TabBar 显示“系统管理”系统管理页面包含以下模块店铺管理上传门店轮播图多张设置导航地址经纬度/位置上传老板微信二维码编辑联系电话编辑店铺介绍内容会员管理按会员编号/手机号查询按时间筛选会员充值输入会员编号 → 增加余额会员扣费输入会员编号 → 扣除余额生成消费记录消费项目管理增删常用消费项目如“洗剪吹”、“烫发”增删常用价格模板如 30 元、100 元扣费时可选择预设项目或手动输入项目名称和金额消费记录查看查看所有会员的消费记录管理员视角五、核心业务规则首次进入必须授权手机号并绑定 openid否则无法使用任何功能。会员编号4 位数字00019999仅首次充值时自动生成全局唯一不重复。充值/扣费统一通过会员编号操作管理员输入编号即可定位会员。消费记录格式年月日时分 - 消费项目 - 消费金额六、安全与防护云函数层面权限校验所有云函数入口必须使用cloud.getWXContext().OPENID获取 openid并校验该用户是否有权执行操作。普通用户只能操作自己的数据除管理员外。管理员操作需验证 openid 是否在管理员列表中。防刷限制每个微信用户每月最多调用 500 次云函数。每个管理员用户每月最多调用 20 万次云函数。使用云数据库记录调用次数字段openid、手机号、时间戳按月统计。若 24 小时内总调用量超过 1 万次在管理员端顶部显示红色警报横幅不自动消失需管理员手动关闭。日志记录管理员操作日志表openid、手机号、操作时间精确到秒、操作详情例如“为会员 0001 充值 100 元”。会员操作日志表openid、手机号、操作时间、操作详情例如“登录”。七、开发要求所有云函数调用前必须校验 openid。管理员操作需记录详细日志。前端需遵循微信小程序设计规范保证用户体验。底部开源信息须保留但可设计为小字号或折叠不影响主界面。注册微信小程序以及新建微信小程序项目注册微信小程序要开发微信小程序项目首先是必须注册一个微信小程序https://mp.weixin.qq.com/cgi-bin/wx注册好后登录微信小程序在开发与服务 - 开发管理 - 开发设置 里可以找到AppID(小程序ID)和AppSecret(小程序秘钥)我们开发小程序项目需要用到这个两个参数。小程序秘钥可以点击右侧“生成”链接生成下切记一定不能泄露出去。新建微信小程序项目打开微信开发者工具点新建项目选择项目目录输入项目名称后端服务选微信云开发然后点“创建”按钮。这样的话我们就把小程序项目新建完了。利用Cursor AI编程 Plan沟通项目方案小店会员微信小程序开发需求一、技术栈微信小程序云开发纯云函数 云数据库二、用户角色VIP 会员普通用户管理员通过数据库配置的多个管理员老板、店长等支持多 openid三、TabBar 页面结构1. “关于我们”页面门店轮播图管理员后台可动态编辑会员余额显示充值按钮 → 跳转至新页面展示老板微信二维码联系电话导航地图地址由管理员配置店铺介绍区域支持富文本管理员可动态编辑业务介绍、价格等2. “消费记录”页面展示当前会员的消费记录项目、金额、时间3. “个人中心”页面显示/编辑姓名可编辑绑定手机号首次登录强制授权绑定后不可编辑显示余额会员编号仅在首次充值后显示未充值隐藏四、管理员功能仅在管理员用户 TabBar 显示“系统管理”系统管理页面包含以下模块店铺管理上传门店轮播图多张设置导航地址经纬度/位置上传老板微信二维码编辑联系电话编辑店铺介绍内容会员管理按会员编号/手机号查询按时间筛选会员充值输入会员编号 → 增加余额会员扣费输入会员编号 → 扣除余额生成消费记录消费项目管理增删常用消费项目如“洗剪吹”、“烫发”增删常用价格模板如 30 元、100 元扣费时可选择预设项目或手动输入项目名称和金额消费记录查看查看所有会员的消费记录管理员视角五、核心业务规则首次进入必须授权手机号并绑定 openid否则无法使用任何功能。会员编号4 位数字00019999仅首次充值时自动生成全局唯一不重复。充值/扣费统一通过会员编号操作管理员输入编号即可定位会员。消费记录格式年月日时分 - 消费项目 - 消费金额六、安全与防护云函数层面权限校验所有云函数入口必须使用cloud.getWXContext().OPENID获取 openid并校验该用户是否有权执行操作。普通用户只能操作自己的数据除管理员外。管理员操作需验证 openid 是否在管理员列表中。防刷限制每个微信用户每月最多调用 500 次云函数。每个管理员用户每月最多调用 20 万次云函数。使用云数据库记录调用次数字段openid、手机号、时间戳按月统计。若 24 小时内总调用量超过 1 万次在管理员端顶部显示红色警报横幅不自动消失需管理员手动关闭。日志记录管理员操作日志表openid、手机号、操作时间精确到秒、操作详情例如“为会员 0001 充值 100 元”。会员操作日志表openid、手机号、操作时间、操作详情例如“登录”。七、开发要求所有云函数调用前必须校验 openid。管理员操作需记录详细日志。前端需遵循微信小程序设计规范保证用户体验。底部开源信息须保留但可设计为小字号或折叠不影响主界面。首先打开cursor 导入项目。然后把需求贴到对话框里模型选Opus4.6模式选Plan。然后点提交。大概几分钟后Opus4.6大模型就给出你设计方案如果你有哪里不满意的话可以继续 Plan沟通知道方案你满意为止。录制过程有个小插曲突然死机了。锋哥有重新搞了一遍提示词生成项目所以最终方案看下面的。大家可能生成的也和我不一样都没关系用AI都可以改的。1. 项目概述┌─────────────────────────────────────────────────────────┐ │ 微信客户端用户侧 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 微信小程序miniprogram/ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ │ │ Pages │ │Components│ │ Utils │ │ │ │ │ │ 12个页面 │ │ 自定义组件│ │ api/auth/util │ │ │ │ │ └──────────┘ └──────────┘ └──────────────────┘ │ │ │ └───────────────────────┬─────────────────────────────┘ │ └──────────────────────────┼──────────────────────────────┘ │ wx.cloud.callFunction ▼ ┌─────────────────────────────────────────────────────────┐ │ 微信云开发平台Serverless │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 云函数 xiaodianNode.js │ │ │ │ ┌────────────┐ ┌──────────────┐ ┌────────────┐ │ │ │ │ │ Middleware │ │ Controllers │ │ Utils │ │ │ │ │ │ 鉴权/限流 │ │ 业务逻辑层 │ │ 辅助工具 │ │ │ │ │ │ /日志 │ │ user/shop/ │ │ │ │ │ │ │ │ │ │ member/finance│ │ │ │ │ │ │ │ │ │ /system │ │ │ │ │ │ │ └────────────┘ └──────────────┘ └────────────┘ │ │ │ └───────────────────────┬─────────────────────────────┘ │ │ │ cloud.database() │ │ ┌───────────────────────▼─────────────────────────────┐ │ │ │ 云数据库文档型 NoSQL │ │ │ │ 13 个集合t_user / t_admin / t_shop / ... │ │ │ └─────────────────────────────────────────────────────┘ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 云存储图片/文件 │ │ │ │ 轮播图 / 二维码 等静态资源 │ │ │ └─────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘1.1 产品定位基于微信云开发的小店会员管理系统面向线下实体小店如美发店、美容店等提供会员注册、余额充值、消费扣费、消费记录查询等核心功能。1.2 核心功能角色功能模块说明会员关于我们店铺轮播图、余额展示、充值入口、导航地图、店铺介绍会员消费记录个人消费历史支持分页加载会员个人中心查看/编辑姓名、手机号、余额、会员编号管理员店铺管理轮播图、导航地址、微信二维码、联系电话、店铺介绍管理员会员管理会员列表、按时间/编号/手机号搜索筛选管理员会员充值通过会员编号或手机号查询并充值管理员消费管理选择/输入消费项目和金额执行扣费管理员项目管理管理常用消费项目和常用价格2. 系统架构总览2.1 架构特点Serverless 架构无需自建服务器云函数按需执行自动弹性伸缩单云函数路由所有业务逻辑集中在一个云函数xiaodian中通过action参数路由分发中间件管道请求经过 鉴权 → 限流 → 业务处理 → 日志记录 的标准流程前后端一体化微信云开发天然打通鉴权openid无需传统的 token/session 机制3. 技术栈层级技术选型版本/说明客户端框架微信小程序原生WXML WXSS JS基础库微信小程序基础库3.15.1服务端运行时Node.js云函数微信云开发托管服务端 SDKwx-server-sdk~2.6.3数据库微信云数据库文档型 NoSQL类 MongoDB文件存储微信云存储图片/静态资源身份认证微信 OpenID 手机号授权内置鉴权开发工具微信开发者工具编译/调试/部署一体化代码加载策略按需注入lazyCodeLoading: requiredComponents4. 目录结构xiaodian2/ ├── project.config.json # 微信开发者工具项目配置 ├── project.private.config.json # 本地私有配置覆盖 ├── README.md # 项目说明文档 ├── ARCHITECTURE.md # 架构技术设计文档本文档 │ ├── miniprogram/ # 小程序前端 │ ├── app.js # 全局入口云初始化、登录检查 │ ├── app.json # 页面路由、TabBar、窗口配置 │ ├── app.wxss # 全局样式 │ ├── sitemap.json # 搜索索引规则 │ │ │ ├── custom-tab-bar/ # 自定义 TabBar 组件 │ │ ├── index.js # 动态 Tab 逻辑管理员/会员切换 │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ │ │ ├── components/ # 公共组件 │ │ └── footer/ # 底部版权组件 │ │ │ ├── utils/ # 工具函数 │ │ ├── api.js # 云函数调用统一封装 │ │ ├── auth.js # 登录态管理与守卫 │ │ └── util.js # 通用格式化工具 │ │ │ └── pages/ # 页面目录 │ ├── about/ # Tab1 - 关于我们店铺首页 │ ├── records/ # Tab2 - 消费记录 │ ├── profile/ # Tab3(会员) - 个人中心 │ ├── admin/ # Tab3(管理员) - 系统管理面板 │ ├── login/ # 登录授权页手机号授权 │ ├── recharge-info/ # 充值方式展示二维码 │ ├── shop-manage/ # 店铺信息管理 │ ├── member-manage/ # 会员列表管理 │ ├── member-recharge/ # 会员充值操作 │ ├── consume-manage/ # 消费扣费操作 │ ├── item-manage/ # 消费项目管理 │ └── shop-intro-edit/ # 店铺介绍富文本编辑 │ └── cloudfunctions/ # 云函数 └── xiaodian/ # 唯一业务云函数 ├── index.js # 入口 路由分发 ├── config.json # 超时配置 开放接口权限 ├── package.json # npm 依赖声明 │ ├── middleware/ # 中间件层 │ ├── auth.js # 鉴权用户/管理员身份判定 │ ├── rateLimit.js # 频率限制月限/日统计/警报 │ └── logger.js # 操作日志管理员/会员分表记录 │ ├── controllers/ # 业务控制器层 │ ├── user.js # 用户登录、资料查看/修改 │ ├── shop.js # 店铺信息查看/更新 │ ├── member.js # 会员列表查询、编号查询 │ ├── finance.js # 财务充值、消费、记录查询 │ ├── system.js # 系统项目/价格/警报/日志管理 │ └── initDb.js # 开发期数据库初始化 │ └── utils/ └── helper.js # 辅助工具会员编号生成等5. 前端架构设计5.1 应用生命周期App.onLaunch │ ├── 1. wx.cloud.init() 初始化云环境 │ ├── 2. initDb.run 开发期自动初始化数据库集合 │ └── 3. checkLogin() 异步检查登录态 │ ├── 调用 user.getProfile │ ├── 已登录 → 设置 globalDatauserInfo/isAdmin/isLoggedIn │ └── 未登录 → loginChecked true等待页面级处理5.2 全局状态管理使用App.globalData作为全局状态中心字段类型说明envstring云开发环境 IDuserInfoobject/null当前用户信息含 balance、memberNo 等isAdminboolean是否管理员isLoggedInboolean是否已登录loginCheckedboolean启动期登录检查是否完成5.3 页面结构与导航采用自定义 TabBar实现动态角色导航Tab 位会员视角管理员视角Tab 1关于我们关于我们Tab 2消费记录消费记录Tab 3个人中心系统管理管理员 Tab3 自动切换为「系统管理」面板通过custom-tab-bar组件根据isAdmin动态渲染。5.4 登录态守卫页面 onShow / onLoad │ └── auth.checkLogin(page) │ ├── loginChecked isLoggedIn → 正常加载数据 ├── loginChecked !isLoggedIn → 跳转 /pages/login/login └── !loginChecked → 注册 loginReadyCallback等待 App 回调5.5 API 调用封装utils/api.js统一封装所有云函数调用callCloud(action, data) → wx.cloud.callFunction({ name: xiaodian, data: { action, ...data } }) → result.code 0 ? resolve(result.data) : reject Toast 提示云函数名固定为xiaodian所有接口通过action字符串路由如user.login、finance.recharge统一错误处理与用户提示6. 后端架构设计云函数6.1 单入口路由架构所有请求统一进入xiaodian云函数的exports.main通过event.action路由到对应 Controller请求进入 (event.action) │ ├── 1. 路由校验 action 是否在 ROUTE_MAP 中 ├── 2. OpenID 提取 cloud.getWXContext().OPENID ├── 3. 开发期分支 DEV_NO_AUTH_ACTIONS → 直接执行 ├── 4. 鉴权中间件 authenticate(openid) ├── 5. 限流中间件 checkRateLimit(openid, isAdmin, phone) ├── 6. 注册校验 非 PUBLIC_ACTIONS 须已绑定手机号 ├── 7. 权限校验 ADMIN_ACTIONS 须 isAdmin true ├── 8. 执行业务 ROUTE_MAP[action](event, authResult) ├── 9. 异步日志 logOperation(authInfo, action, event) └── 10. 返回结果 { code: 0, data } 或 { code: 非0, message }6.2 路由映射表ROUTE_MAPActionController方法权限user.loginuserCtrllogin公开user.getProfileuserCtrlgetProfile公开user.updateNameuserCtrlupdateName已登录shop.getInfoshopCtrlgetInfo已登录shop.updateInfoshopCtrlupdateInfo管理员member.listmemberCtrllist管理员member.getByMemberNomemberCtrlgetByMemberNo管理员finance.rechargefinanceCtrlrecharge管理员finance.consumefinanceCtrlconsume管理员finance.getMyRecordsfinanceCtrlgetMyRecords已登录finance.getMemberRecordsfinanceCtrlgetMemberRecords管理员system.getItemssystemCtrlgetItems管理员system.addItemsystemCtrladdItem管理员system.deleteItemsystemCtrldeleteItem管理员system.getPricessystemCtrlgetPrices管理员system.addPricesystemCtrladdPrice管理员system.deletePricesystemCtrldeletePrice管理员system.getAlertssystemCtrlgetAlerts管理员system.dismissAlertsystemCtrldismissAlert管理员system.getAdminLogssystemCtrlgetAdminLogs管理员initDb.runinitDbCtrlrun开发期免鉴权6.3 中间件层6.3.1 鉴权中间件auth.jsauthenticate(openid) │ ├── 查询 t_user → 判断 registered是否有 phone ├── 查询 t_admin → 判断 isAdmin │ └── 返回 { openid, registered, isAdmin, userInfo, phone }6.3.2 限流中间件rateLimit.js维度规则阈值普通用户月限按 openid 月份统计500 次/月管理员月限所有管理员合计统计200,000 次/月全局日统计按日期统计所有调用10,000 次/日触发警报限流流程checkRateLimit(openid, isAdmin, phone) │ ├── 查询/创建 t_rate_limit 月度计数记录原子 inc │ ├── 管理员 → 汇总当月所有管理员调用200,000 则限制 ├── 普通用户 → 当前用户当月 500 则限制 │ └── 异步触发 checkDailyAlert(today) ├── 更新 t_daily_count 日统计 └── 10,000 且无未关闭警报 → 写入 t_alert6.3.3 日志中间件logger.jslogOperation(authInfo, action, event) │ ├── 管理员 → 写入 t_admin_log ├── 已注册会员 → 写入 t_member_log └── 未注册用户 → 不记录日志内容包含openid、phone、action、可读详情buildDetail映射、时间戳。6.4 统一响应格式// 成功 { code: 0, data: { ... } } // 业务错误 { code: 400, message: 无效的操作 } { code: 401, message: 身份验证失败无法获取openid } { code: 403, message: 请先完成手机号授权登录 } { code: 403, message: 权限不足需要管理员权限 } { code: 429, message: 本月云函数调用次数已达上限(500次) } { code: 500, message: 服务器内部错误 }7. 数据库设计7.1 数据库类型微信云数据库文档型 NoSQL类 MongoDB通过wx-server-sdk的cloud.database()访问。7.2 集合表设计7.2.1 核心业务集合t_user — 用户/会员表字段类型说明_idstring文档 ID自动生成openidstring微信 OpenID唯一标识phonestring手机号授权绑定namestring用户姓名balancenumber会员余额元memberNostring/null4位会员编号首次充值时生成firstRechargeTimedate首次充值时间createTimedate创建时间updateTimedate最后更新时间t_admin — 管理员表字段类型说明_idstring文档 IDopenidstring管理员微信 OpenIDphonestring手机号namestring管理员姓名t_shop — 店铺信息表字段类型说明_idstring文档 ID轮播图、地址坐标、二维码、联系电话、店铺介绍等mixed店铺展示信息7.2.2 交易流水集合t_recharge_record — 充值记录字段类型说明memberNostring会员编号userOpenidstring会员 OpenIDuserPhonestring会员手机号amountnumber充值金额adminOpenidstring操作管理员 OpenIDadminPhonestring管理员手机号createTimedate充值时间t_consume_record — 消费记录字段类型说明memberNostring会员编号userOpenidstring会员 OpenIDuserPhonestring会员手机号projectstring消费项目名称amountnumber消费金额adminOpenidstring操作管理员 OpenIDadminPhonestring管理员手机号createTimedate消费时间7.2.3 配置集合集合说明t_consume_item常用消费项目如洗剪吹、烫发t_price_item常用价格选项如 30 元、100 元7.2.4 安全与运维集合集合说明t_rate_limit月度调用频率统计按 openid yearMontht_daily_count每日调用总量统计t_alert异常警报记录超阈值自动生成t_admin_log管理员操作日志t_member_log会员操作日志t_counter计数器会员编号自增序列0001-99997.3 集合关系图t_admin ─────┐ │ openid t_user ──────┤◄──── t_recharge_record │ │ ▲ adminOpenid │ memberNo │ │ │ │ t_consume_record │ │ ▲ adminOpenid │ │ │ ├──── t_rate_limit按 openid 统计 │ ├──── t_admin_log管理员操作 │ └──── t_member_log会员操作 │ └── t_counter会员编号序列生成器 t_shop ── 独立单条文档存储店铺配置信息 t_consume_item / t_price_item ── 独立配置项 t_daily_count / t_alert ── 运维监控8. 接口设计API8.1 调用方式所有接口通过统一方式调用wx.cloud.callFunction({ name: xiaodian, data: { action: module.method, // ...业务参数 } })8.2 接口分类用户模块user接口说明入参出参user.login手机号授权登录codeuserInfo isAdminuser.getProfile获取个人资料-userInfo或{ needLogin }user.updateName修改姓名name{ success }店铺模块shop接口说明入参出参shop.getInfo获取店铺信息-店铺配置对象shop.updateInfo更新店铺信息各店铺字段更新结果会员模块member接口说明入参出参member.list会员列表筛选/分页参数列表 分页member.getByMemberNo按编号查会员memberNo会员信息财务模块finance接口说明入参出参finance.recharge充值memberNo/phone, amount会员最新余额finance.consume消费扣费memberNo, project, amount会员最新余额finance.getMyRecords我的消费记录page, pageSize分页记录列表finance.getMemberRecords会员记录(管理员)memberNo, page, pageSize消费充值记录系统模块system接口说明system.getItems / addItem / deleteItem消费项目 CRUDsystem.getPrices / addPrice / deletePrice常用价格 CRUDsystem.getAlerts / dismissAlert警报查看/关闭system.getAdminLogs管理员操作日志9. 安全机制9.1 身份认证微信授权体系 │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ OpenID 自动获取 手机号授权 管理员白名单 (cloud.getWXContext) (getPhoneNumber) (t_admin) │ │ │ └───────────────┼───────────────┘ ▼ 三级权限判定 公开 已登录 管理员层级条件可访问接口公开仅需 OpenIDuser.login、user.getProfile已登录OpenID 已绑定手机号所有非管理员接口管理员OpenID t_admin 存在记录ADMIN_ACTIONS 列表中的接口9.2 调用频率限制对象限额超限行为普通用户500 次/月返回 429拒绝服务管理员全体200,000 次/月返回 429拒绝服务全局日统计10,000 次/日自动生成 t_alert 警报9.3 业务安全校验充值金额必须 0 且 100,000 元消费金额必须 0 且 100,000 元且不超过会员余额姓名修改非空且 20 字符会员编号4 位数字0001-9999通过t_counter原子自增保证唯一性利用Cursor AI编程 Agent生成项目我们点Build生成项目大概等待20分钟左右项目生成完成了。我们把项目导入微信开发者工具尝试运行。利用Cursor AI编程 Agent修复bug和完善功能我们用得是旗舰模型Opus4.6目前生成的项目基本也没啥问题我测试了一遍。假如大家还有不满意的话可以然AI继续改即可。