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.
wx.sstbc.com/doc/积分系统与商城结合促进校友活跃度方案.md

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_registerscore_course_signscore_content_checkscore_evaluationscore_supply_demandscore_donatescore_daily_login 等,后台可调。
  • 部分规则需加「仅校友可得」:在发分前判断 User::find($user_id)->is_schoolmate == 1,不满足则不发或发减半(由产品决定)。

三、积分商城功能设计

3.1 模块范围

  • 商品/礼品管理(后台):商品名称、图片、所需积分、库存、是否仅校友可兑换、上下架、排序。
  • 兑换记录(前后台):谁、何时、兑换何商品、扣减积分、订单状态(待发货/已发货/已完成)。
  • 积分明细与余额(移动端):当前积分、积分明细列表(现有 score_logs 可复用,需区分 type1 获得 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_logsscore 为负、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」在同一事务中避免只写日志不改余额或只改余额不写日志。
  • 合规:积分与兑换若涉及实物或权益,需在规则页说明解释权、过期与清零政策(若有),避免纠纷。

本方案在不改变现有校友与课程主流程的前提下,通过「积分获取扩展 + 积分商城 + 校友专属」三条线,与系统现有功能深度结合,达到促进校友活跃度的目标。实施时可按阶段落地,先做积分规则与展示,再做商城与运营策略。