You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8.7 KiB
8.7 KiB
积分系统与商城功能结合促进校友活跃度方案
一、现状与目标
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 数据表建议(与现有库表风格一致)
# 积分商品表 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」在同一事务中,避免只写日志不改余额或只改余额不写日志。
- 合规:积分与兑换若涉及实物或权益,需在规则页说明解释权、过期与清零政策(若有),避免纠纷。
本方案在不改变现有校友与课程主流程的前提下,通过「积分获取扩展 + 积分商城 + 校友专属」三条线,与系统现有功能深度结合,达到促进校友活跃度的目标。实施时可按阶段落地,先做积分规则与展示,再做商城与运营策略。