签到系统

XYGo Admin 2025-02-20 52 次阅读

每日签到功能与连续签到奖励

签到系统

功能说明

会员每日签到可获得积分奖励,连续签到天数越多奖励越高。

签到规则

  • 每天只能签到一次
  • 签到成功后获得积分奖励
  • 连续签到天数会累计
  • 断签后连续天数重置为 1

数据结构

member_checkin 表:

字段 说明
member_id 会员 ID
days 连续签到天数
last_checkin_at 最后签到时间
total_days 累计签到总天数

后端实现

签到逻辑在 internal/logic/member/checkin.go 中:

go 复制代码
// 签到流程
1. 检查今天是否已签到
2. 判断是否连续签到(昨天是否签到)
3. 更新连续天数(连续 +1,断签重置为 1)
4. 计算积分奖励
5. 增加会员积分 + 记录积分日志
6. 更新签到记录

前端调用

typescript 复制代码
// api/frontend/member/checkin.ts
import { memberRequest } from '@/utils/http'

// 执行签到
export function doCheckin() {
  return memberRequest.post({ url: '/checkin/sign' })
}

// 获取签到状态
export function getCheckinStatus() {
  return memberRequest.get({ url: '/checkin/status' })
}

前台展示

会员中心和社区页面中展示签到组件:

  • 显示连续签到天数
  • 7 天签到日历
  • 签到按钮(已签到则置灰)
  • 积分奖励提示