|
|
# 积分系统与商城功能结合促进校友活跃度方案
|
|
|
|
|
|
## 一、现状与目标
|
|
|
|
|
|
### 1.1 系统现有能力
|
|
|
|
|
|
| 模块 | 现状 | 说明 |
|
|
|
|------|------|------|
|
|
|
| **积分** | 已具备基础能力 | `users.score` 字段、`score_logs` 表,`ScoreLog::add()` 方法;当前仅「分享获得」一种获取方式,依赖配置项 `share_score` |
|
|
|
| **校友** | 已完善 | `is_schoolmate`、校友库、校友企业、课程审核后自动入校友库、校友捐赠(donates)、校友动态(articles) |
|
|
|
| **移动端** | 课程/预约/供需/图书 | 课程报名与签到、课表签到(content_check)、预约、供需信息、图书、用户信息、捐赠 |
|
|
|
| **商城** | 未建设 | 无商品、兑换、订单模块 |
|
|
|
|
|
|
### 1.2 目标
|
|
|
|
|
|
- **积分与行为挂钩**:将课程、签到、供需、捐赠等校友相关行为纳入积分体系,明确「做什么得多少分」。
|
|
|
- **积分可消费**:建设积分商城(礼品/权益),支持积分兑换,让积分有实际价值。
|
|
|
- **校友身份加成**:部分积分规则或商品仅对校友开放,激励完成认证、持续参与。
|
|
|
- **提升活跃**:通过「赚积分→换好礼」闭环,提高打开率、参与课程与活动、使用供需等功能的频率。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 二、积分获取规则设计(与现有功能结合)
|
|
|
|
|
|
在保留现有「分享获得」基础上,新增以下规则,均可在后台通过 Config 或独立配置表配置分值,便于运营调整。
|
|
|
|
|
|
| 行为 | 触发节点 | 建议分值(示例) | 说明 |
|
|
|
|------|----------|----------------|------|
|
|
|
| 分享获新用户 | 小程序 `applet-login` 带 pid,新用户首次登录 | 沿用 `share_score` | 已实现 |
|
|
|
| 完善资料 | 用户首次补全姓名/公司/职位等关键信息 | 50~200 | 需在 `updateUser` 或资料页增加「是否首次完善」判断 |
|
|
|
| 课程报名成功 | 报名审核通过(CourseSign status 通过) | 20~50/次 | 在审核通过逻辑中调用 `ScoreLog::add` |
|
|
|
| 单次课签到 | 课表签到成功(CourseContentCheck) | 5~15/次 | 签到成功回调中发积分 |
|
|
|
| 课程评价 | 提交课程/单次课评价 | 10~30/次 | 评价提交接口中发积分 |
|
|
|
| 供需发布 | 供需信息审核通过 | 30~80/条 | 审核通过时给发布者积分 |
|
|
|
| 供需留言/对接 | 在供需下有效留言或标记对接成功 | 5~20/次 | 需定义「有效」规则 |
|
|
|
| 校友捐赠 | 捐赠信息审核通过(donates) | 100~500/次 | 审核通过时发积分(可与捐赠金额档位挂钩) |
|
|
|
| 预约到场 | 预约完成且到场核销 | 10~30/次 | 需有到场核销节点 |
|
|
|
| 每日登录 | 当日首次打开小程序并完成接口请求 | 1~5/天 | 需防刷(同 user 同日仅一次) |
|
|
|
| 校友专属任务 | 如「邀请一名校友注册并认证」 | 100~300 | 需定义「校友」与「认证」口径 |
|
|
|
|
|
|
**实现要点:**
|
|
|
|
|
|
- 所有新增发分点统一调用 `ScoreLog::add($user_id, $score, $remark)`,`remark` 建议用统一文案如「课程报名」「课表签到」「供需发布」等,便于对账与统计。
|
|
|
- 建议新增 Config 键:`score_register`、`score_course_sign`、`score_content_check`、`score_evaluation`、`score_supply_demand`、`score_donate`、`score_daily_login` 等,后台可调。
|
|
|
- 部分规则需加「仅校友可得」:在发分前判断 `User::find($user_id)->is_schoolmate == 1`,不满足则不发或发减半(由产品决定)。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 三、积分商城功能设计
|
|
|
|
|
|
### 3.1 模块范围
|
|
|
|
|
|
- **商品/礼品管理**(后台):商品名称、图片、所需积分、库存、是否仅校友可兑换、上下架、排序。
|
|
|
- **兑换记录**(前后台):谁、何时、兑换何商品、扣减积分、订单状态(待发货/已发货/已完成)。
|
|
|
- **积分明细与余额**(移动端):当前积分、积分明细列表(现有 `score_logs` 可复用,需区分 type:1 获得 2 消耗)。
|
|
|
|
|
|
### 3.2 数据表建议(与现有库表风格一致)
|
|
|
|
|
|
```text
|
|
|
# 积分商品表 score_goods
|
|
|
id, name, image_id, score_price, stock, is_schoolmate_only(0/1), sort, status(0下架1上架), created_at, updated_at, deleted_at
|
|
|
|
|
|
# 积分兑换订单表 score_orders
|
|
|
id, user_id, score_good_id, score_amount, status(0待发货1已发货2已完成3已取消), address_snapshot, created_at, updated_at, deleted_at
|
|
|
```
|
|
|
|
|
|
- 兑换时:扣减 `users.score`,写入 `score_logs`(score 为负、remark 如「兑换-商品名」),扣减 `score_goods.stock`,生成 `score_orders`。
|
|
|
- 若需物流:在 `score_orders` 或扩展表记录收货人、手机、地址(可 address_snapshot JSON),后台发货后更新 status。
|
|
|
|
|
|
### 3.3 与校友身份结合
|
|
|
|
|
|
- **商品维度**:部分商品设置「仅校友可兑换」,移动端列表与详情中展示「仅校友」标签,未认证校友点击兑换时提示「请先完成校友认证」。
|
|
|
- **价格维度**(可选):同一商品可设「校友价」与「非校友价」,用积分差体现校友优势,激励认证与保持校友身份。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 四、促进校友活跃的具体策略
|
|
|
|
|
|
### 4.1 拉新与认证
|
|
|
|
|
|
- 分享得积分(已有)+ 被邀请人完成「校友认证」后给邀请人额外积分,形成二次激励。
|
|
|
- 新用户引导任务:完善资料→报名一门课→完成首次签到,每步给积分,最后一步可给较大额,引导完成从「注册」到「校友行为」的路径。
|
|
|
|
|
|
### 4.2 课程与活动
|
|
|
|
|
|
- 报名、签到、评价均给积分,并可在课程详情/签到成功页展示「本次获得 XX 积分」,强化即时反馈。
|
|
|
- 重要活动(如开学典礼、年会)可设「参与即得积分」或「签到得双倍积分」,由后台配置或活动开关控制。
|
|
|
|
|
|
### 4.3 内容与互动
|
|
|
|
|
|
- 供需发布、有效留言给积分,鼓励发布需求与对接。
|
|
|
- 校友动态(articles)可扩展「点赞/评论得积分」或「优质动态被采纳得积分」,需防刷与内容审核。
|
|
|
|
|
|
### 4.4 捐赠与品牌
|
|
|
|
|
|
- 捐赠审核通过后给积分,并可设「捐赠专属礼品」仅可用积分+捐赠记录兑换,增强荣誉感与品牌绑定。
|
|
|
|
|
|
### 4.5 积分商城本身
|
|
|
|
|
|
- 上架校友专属商品(如学院周边、活动名额、线下权益),仅校友可兑换或校友享受更低积分价。
|
|
|
- 限时兑换、限量商品,制造稀缺感,促进行为前置(先攒积分再抢兑)。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 五、实施节奏建议
|
|
|
|
|
|
| 阶段 | 内容 | 依赖 |
|
|
|
|------|------|------|
|
|
|
| **第一阶段** | 扩展积分获取:在现有课程报名通过、课表签到、分享处增加 `ScoreLog::add`,并增加 Config 配置项 | 现有 CourseSign/CourseContentCheck/UserController |
|
|
|
| **第二阶段** | 移动端「我的积分」:展示当前积分与明细列表(拉取 score_logs,区分正负),必要时在 score_logs 增加 type 字段 | score_logs、users.score |
|
|
|
| **第三阶段** | 积分商城后台:score_goods、score_orders 表与 CRUD,商品管理、订单管理、发货 | 新建表与 Admin 控制器/菜单 |
|
|
|
| **第四阶段** | 积分商城移动端:商品列表/详情、兑换下单、订单列表与状态 | 新建 Mobile 控制器与小程序页 |
|
|
|
| **第五阶段** | 校友专属与运营策略:仅校友可兑换商品、校友价、捐赠/活动专项积分与礼品 | 上述全部 + 运营配置 |
|
|
|
|
|
|
---
|
|
|
|
|
|
## 六、与现有代码的衔接点
|
|
|
|
|
|
- **发积分**:统一用 `App\Models\ScoreLog::add($user_id, $score, $remark)`;若需支持「消耗」积分,可扩展 `ScoreLog::consume($user_id, $score, $remark)`(内部 decrement users.score 并写入一条负 score 记录)。
|
|
|
- **配置**:积分分值继续用 `Config::getValueByKey('xxx')` 读取,在后台 Config 管理中加入 `score_*` 系列 key。
|
|
|
- **校友判断**:`User::is_schoolmate == 1`,与现有校友库、课程自动入库逻辑一致。
|
|
|
- **移动端鉴权**:兑换、积分明细等接口放在现有 `mobile` 路由组内,使用现有 `getUserId()` 等鉴权即可。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 七、风险与注意
|
|
|
|
|
|
- **防刷**:每日登录、签到等按人按日去重;分享需确认为新用户且未重复给同一 pid 发过该新用户的奖励;兑换需校验库存与积分余额,并发下用事务与行锁。
|
|
|
- **积分一致性**:发分/扣分务必「改 users.score + 写 score_logs」在同一事务中,避免只写日志不改余额或只改余额不写日志。
|
|
|
- **合规**:积分与兑换若涉及实物或权益,需在规则页说明解释权、过期与清零政策(若有),避免纠纷。
|
|
|
|
|
|
本方案在不改变现有校友与课程主流程的前提下,通过「积分获取扩展 + 积分商城 + 校友专属」三条线,与系统现有功能深度结合,达到促进校友活跃度的目标。实施时可按阶段落地,先做积分规则与展示,再做商城与运营策略。
|