# web_sys **Repository Path**: Azreal_zhou/web_sys ## Basic Information - **Project Name**: web_sys - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 名怀会员管理系统 - 技术文档 ## 一、整体架构 ``` 微信小程序 (wx_sys) ←→ Django REST API (web_sys) ←→ MySQL (minghuai) ``` - 前端:微信小程序,AppID wx68124dd1442e62a2 - 后端:Django 4.2 + PyMySQL,端口 8000 - 数据库:minghuai@localhost:3306,root/root --- ## 二、数据表结构 ### 1. mh_member_user(会员用户表) | 字段 | 类型 | 说明 | |------|------|------| | id | AutoField | 自增主键 | | openid | CharField | 微信openid(小程序唯一标识) | | unionid | CharField | 微信unionid(跨小程序标识) | | session_key | CharField | 微信会话密钥 | | access_token | CharField | 用户access_token(2小时有效) | | refresh_token | CharField | 刷新token(永久) | | nickname | CharField | 微信昵称(用户私有,商家不可见) | | avatar | URLField | 用户头像 | | phone | CharField | 手机号 | | role | CharField | 角色:owner(店主)/member(会员) | | level | FK | 会员等级 | | shop_owner | FK(自关联) | 所属店主(会员→店主) | | shop_name | CharField | 店名 | | shop_desc | TextField | 店铺简介 | | address | CharField | 店铺地址 | | real_name | CharField | 真实姓名 | | id_card | CharField | 身份证号 | | created_at | DateTime | 注册时间 | ### 2. mh_user_level(会员等级表) | 字段 | 说明 | |------|------| | id | 主键 | | level_name | 等级名(普通/白银/黄金/至尊) | | discount | 折扣 | ### 3. mh_user_shop_rel(用户-店铺关联表) | 字段 | 说明 | |------|------| | id | 主键 | | user | FK→会员 | | shop_owner | FK→店主 | | balance | 余额(按店独立) | | remark_name | 商家备注名 | | is_deleted | 软删除(商家后台隐藏) | | is_hidden | 用户端隐藏店铺 | ### 4. mh_transaction(交易流水表) | 字段 | 说明 | |------|------| | id | 主键 | | user | FK→用户 | | shop_owner | FK→店主 | | type | recharge(充值)/consume(消费) | | amount | 余额变动总额(基数+赠送) | | real_amount | 实际收入(仅基数) | | balance_after | 交易后余额 | | description | 描述 | ### 5. mh_recharge_plan(充值套餐表) | 字段 | 说明 | |------|------| | owner | FK→店主 | | name | 套餐名 | | price | 充值金额 | | gift_amount | 赠送金额 | ### 6. mh_service_item(服务项目表) | 字段 | 说明 | |------|------| | owner | FK→店主 | | name | 服务名 | | price | 原价 | | discount | 会员折扣(8.5=8.5折) | | description | 介绍 | | image | 图片URL | ### 7. mh_member_day(会员日表) | 字段 | 说明 | |------|------| | owner | FK→店主 | | day_type | once(指定日期)/weekly(每周) | | day | 指定日期 | | weekday | 周几(1-7) | | discount | 会员日折扣 | | is_enabled | 开关 | | services | M2M→服务项目 | ### 8. mh_book(预约表) | 字段 | 说明 | |------|------| | user | FK→用户 | | owner | FK→店主 | | service | FK→服务 | | date/time | 到店时间 | | remark | 备注 | ### 9. mh_shop_code(商家码表) | 字段 | 说明 | |------|------| | code | 6位短码 | | owner | FK→店主 | --- ## 三、接口列表 ### 认证 - POST /api/login/ — 登录(code换openid) - POST /api/refresh/ — 刷新token - GET /api/user_info/ — 用户信息 ### 会员管理(商家) - GET /api/member_list/ — 会员列表(含累计充值) - POST /api/member_update/ — 编辑备注 - POST /api/member_delete/ — 软删除 ### 充值 - POST /api/member_recharge_admin/ — 商家给会员充值 - GET /api/plan_list/ — 充值套餐列表 - POST /api/plan_save/ — 保存套餐 - POST /api/plan_delete/ — 删除套餐 ### 服务项目 - GET /api/service_list/ — 服务列表 - POST /api/service_save/ — 保存服务 - POST /api/service_delete/ — 删除服务(物理删除) ### 会员日 - GET/POST /api/member_day_list/ — 列表/保存 - POST /api/member_day_delete/ — 删除 ### 收款 - GET /api/charge_user_info/ — 扫码识别会员 - POST /api/charge/ — 扣款(自动计算会员折扣+会员日折扣) - GET /api/shop_orders/ — 商家订单(type=recharge/consume) - GET /api/shop_order_detail/ — 订单详情 ### 用户端 - GET /api/my_shops/ — 我的门店 - GET /api/my_detail/ — 门店会员详情 - GET /api/my_transactions/ — 我的账单 - GET /api/my_transaction_detail/ — 账单详情 - GET /api/shop_services/ — 某店服务 - GET /api/shop_member_days/ — 某店会员日 - POST /api/book_save/ — 提交预约 - GET /api/book_list/ — 商家预约列表 ### 二维码 - GET /api/my_shop_code/ — 商家码(getwxacodeunlimit,page=register,scene=短码) - GET /api/my_pay_code/ — 用户付款码(page=charge,scene=c_短码) --- ## 四、缓存策略 前端 wx.setStorageSync 缓存(前缀 cache_): | Key | 内容 | 失效时机 | |-----|------|---------| | member_list | 会员列表 | 编辑/删除会员后 | | my_shops | 用户门店 | 切换门店后 | | plan_list | 充值套餐 | 增删改套餐后 | | service_list | 服务列表 | 增删改服务后 | | total_income | 店铺总收入 | 充值后 | | userInfo | 用户信息 | 登录/换头像后 | | avatar_{id} | 用户头像URL | - | **不缓存**:订单列表、账单明细(实时查询)。 --- ## 五、权限与数据隔离 1. **注册即店主**(role=owner) 2. **会员通过扫码注册**创建 UserShopRelation 关联 3. **余额按店独立**:UserShopRelation.balance 4. **商家不可见会员nickname**,只能看备注名/手机号 5. **软删除**:UserShopRelation.is_deleted 只在商家后台隐藏,不影响登录 6. **token认证**:所有接口用 Authorization: Bearer token,过期自动refresh --- ## 六、二维码逻辑 | 类型 | 接口 | page | scene | |------|------|------|-------| | 商家码 | my_shop_code | pages/register/register | 短码 | | 用户付款码 | my_pay_code | pages/charge/charge | c_短码 | app.onShow 检测 scene 前缀:c_开头→收款页,纯短码→注册页。