技术文档.md 79 KB

打卡结算

ui设计工具:即时设计

小程序框架:uniapp

后端框架:spring boot + mybatis + tk mybatis+ spring mvc

数据库:mysql

数据库备份工具:gobackup

系统功能

基本概念

打卡规则

单任务
  • 打卡类型:计时、计数、单次打卡(计数的特例,只需计一次数)
  • 单位:次数、分钟
  • 比较规则:大于等于、小于等于
  • 比较的目标:用于判断是否完成打卡;一般情况下,只有一个比较目标1;但是启用法定节假日的话,还有一个难度比较低的比较目标2,用于判断比较
  • 重复频率:每日、法定工作日、法定节假日(含周末)、自定义(周一至周日)
  • 全勤周期:每周、每月
  • 打卡任务分类:
    • 普通打卡任务:没有明确的结束时间,任务永远不会结束
    • 任务式打卡任务:有明确的结束时间,任务到期自动结束并进行归档
多任务
  • 打卡类型:任务完成数
  • 单位:任务数
  • 比较规则:大于等于
  • 比较的目标:用于判断是否完成打卡
  • 重复频率:每天

结算规则

任务类型 时间范围 启用状态(启用/禁用/可选) 计量单位 前置判断 基本奖励 额外奖励 全勤奖励 节假日奖励
单任务 当天 启用 单次、计数、计时
单任务 连续 可选 天数
多任务 当天 可选 任务数
多任务 连续 可选 天数
注意事项
  1. 在连续完成的时候,需要关注的是连续完成的天数,其它不用理会
  2. 多任务的当天或连续的启用状态是共用的,即一个开启则整个开启
  3. 单任务(当天、连续)的前置判断是共用
  4. 多任务(当天、连续)的前置判断是共用
  5. 法定节假日包含周末
  6. 单任务中-单次打卡类型 是没有额外奖励的,因为没有超出的数量进行计算
  7. 单任务-连续、多任务(当天、连续)额外奖励的计算方式目前只有区间计算
积分计算公式

单个任务积分=基本积分+额外积分+法定节假日(含周末)双倍奖励+全勤双倍奖励+连续完成额外积分

多个任务积分=基本积分+额外积分+连续完成额外积分

总积分=单个任务积分+多个任务积分

获取积分奖励的方式
  1. 单个任务当天完成打卡则给予奖励
  2. 单个任务法定节假日(含周末)双倍奖励
  3. 单个任务全勤双倍奖励,即在一个周期内打卡完成数在容错范围内则给予奖励
  4. 单个任务连续完成打卡则给予额外奖励,按照区间规则进行计算
  5. 多个任务完成打卡则给予奖励
  6. 多个任务连续完成打卡则给予奖励,按照区间规则进行计算
连续规则

作用:用于那些连续性比较强的任务,希望一直连续完成,不是三天晒网两天打鱼

计量单位:连续天数

目标对象:单任务、多任务

规则:设宽限期N天,中断X次,惩罚Y天

  • 宽限期阶段:
    1. 有连续N天宽限期,期间完成打卡也不结算积分、不计算连续打卡天数
    2. 如果N天宽限期后第一次完成打卡,则进入正常打卡期
    3. 如果N天宽限期后一直没有完成打卡,则一直处于宽限期
  • 正常打卡期:
    1. 如果完成打卡,允许结算积分和计算连续打卡天数
    2. 如果没有完成打卡(连续打卡中断),则进入惩罚期,且接下来Y天是惩罚时间且连续打卡天数重置(归零),如果连续进入惩罚期的次数等于中断X次,则重新进入宽限期
  • 惩罚期:
    1. 在Y天的惩罚时间内完成打卡也不结算积分、不计算连续打卡天数
    2. Y天的惩罚时间结束后,自动返回正常打卡期
额外奖励计算
  • 计算方式:固定、区间

  • 计算前提:要把其它计量单位按规则转换为具体数值才能进行计算

    • 计量单位:分钟,设15分钟为基本数值,额外时长60分钟,规则:额外时长➗基本数值=具体数值,即具体数值为4
  • 计算规则(假设已有具体数值)

    • 固定计算:具体数值✖️固定奖励=额外积分

    例如:3✖️4=12

    具体数值:3,固定奖励:4,最后得出额外积分:12

    • 区间计算:按照区间范围,大于等于区间起始值,则有区间内次数✖️区间奖励=区间总奖励,最后把区间总奖励汇总即可获得总奖励数

    例如:具体数值:12,根据区间规则计算得最后总奖励数:50。

    区间起始值 区间奖励 是否满足区间条件
    (需大于等于区间起始值)
    区间内次数 区间总奖励
    1 1 5 1✖️5=5
    6 5 5 5✖️5=25
    11 10 2 2✖️10=20
    15 15
    合计:50
重复类型变更的影响

重复频率由多到小: 每天 ≥ 自定义(整周) > 法定 工作日 > 自定义(单独设置几天) > 法定 节假日(含周末)

对本周/本月的总打卡次数影响:

  • 如果不更换:只有1个总打卡次数
  • 如果更换:总打卡次数=重复类型A范围的总次数+重复类型B范围的总次数+重复类型C范围的总次数.....

计算公式:总打卡次数=历史真实发生的总打卡次数+上次发生的总打卡次数+本次可能的总打卡次数

变换时间点 重复类型 周一 周二 周三 周四 周五 周六 周日 总打卡次数
周一 每天 7
周三 自定义1 5=2+3+0
周六 自定义2 4=2+1+1

对全勤结算的影响:

  • 全勤周期类型:每周、每月

  • 影响原因:总打卡数和完成打卡数发生变化

  • 影响范围

    • 对全勤周期类型是每周的影响
    • 如果是在每周第一天进行更换:不会影响本周的总打卡数和完成打卡数
    • 如果是在每周的中途更换:会影响本周总打卡数和完成打卡数

    • 对全勤周期类型是每月的影响

    • 如果是在每月第一天进行更换:不会影响本月的总打卡数和完成打卡数

    • 如果是在每月的中途更换:会影响本月总打卡数和完成打卡数

  • 影响分析

    • 重复次数由小变大:旧次数(总打卡数、完成打卡数)存在小于新次数(总打卡数、完成打卡数)的可能,因此可能没有足够的时间/错过了时机去完成整个周期的打卡目标,原有的次数不能匹配新的容错率,最终影响结算奖励
    • 重复次数由大变小:总打卡数降低,旧的完成打卡数大于等于新的完成打卡数,能匹配新的容错率,相当于提前完成了目标,因此是没有影响的

注:下表✅即是自设的打卡时间

| 时间范围 | 自定义次数 | 容错次数数 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 总可打卡次数 | 完成打卡次数 | 结果 | | -------- | ---------- | ---------- | ---- | ---- | ---- | ---- | ---- | ---- | --------------- | ------------ | ------------ | -------------- | | 7 | 3 | 1 | | | ✅ | ✅ | ✅ | | 周日增加到到5次 | 3 | 3 | 满足全勤条件 | | 7 | 5 | 1 | ✅ | ✅ | ✅ | ✅ | ✅ | | | 3 | 3 | 不满足全勤条件 |

  • 结论:更换重复类型影响全勤判断,但是无需在代码上特意考虑,是正常的
全勤周期更换的影响

全勤周期类型:每周、每月

影响分析:全勤周期变换会影响全勤的判断时机,即影响奖励次数(周奖励次数多于月)

  • 每周变每月:奖励次数减少
  • 每月变每周:奖励次数增加

场景:

  • 只变更全勤周期:没有影响,仅仅是判断全勤的时机发生了变化
  • 只变更重复周期:影响见上文“重复类型变换的影响”
  • 同时变更全勤周期和重复周期:影响是由重复周期变换导致的,因此参考上文“重复类型变换的影响”

结论:虽然会影响奖励次数,但是是正常的,已奖励的是正常发放的,继续按照新的周期继续进行判断即可,无需在代码上特意考虑

积分账户

  • 基本户:用于结算积分转入,或者兑换奖励

  • 一般户:专项专用,只能兑换指定奖励

按页面划分

今日待办任务(主页)

  1. 显示今日待办的打卡任务数量

  2. 显示今日待办的打卡任务列表

显示元素:任务名称、任务描述、奖励的基本积分数、节假日奖励标识、全勤奖励标识、自动打卡标识、本周的打卡情况、打卡按钮、宽限期/惩罚期/正常打卡期标识

注意点:

  1. 打卡按钮根据不同的打卡类型有不同的显示

    • 打卡类型:单次打卡,未完成则显示“完成”

    • 打卡类型:计数,未完成则显示“计数”,并且显示当前已打卡次数

    • 打卡类型:计时,未完成则显示“计时”,并且显示当前已记录的打卡时间

  2. 任务显示时机控制,控制过了某个时间点才出现,不要一下子就把当天的都列出来

  3. 列表需要根据排序进行显示

  4. 支持的功能操作:创建打卡任务、打卡

打卡任务列表

  1. 显示总的打卡任务数量

  2. 显示总的打卡任务列表

显示元素:任务名称、任务描述、奖励的基本积分数、节假日奖励标识、全勤奖励标识、自动打卡标识

注意点:

  1. 列表需要根据排序进行显示
  2. 查询时可以筛选是否显示已归档任务,默认不显示

  3. 支持的功能操作:创建打卡任务、编辑、删除、打卡、补打卡、误打卡撤销、归档

    • 补打卡规则:

      1. 如果完全没有打过卡:按照当时的打卡规则,直接生成一条新的打卡记录和结算记录
      2. 如果打过卡但是未完成的
      3. 对于单次打卡:不存在这种情况
      4. 对于计数打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位
      5. 对于计时打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位
    • 误打卡撤销规则:

      1. 只允许当天撤销

      2. 数据变化

      对于单次打卡:直接删除打卡记录即可

      对于计数打卡:直接扣减次数(-1)即可,次数变成0即删除打卡记录

      对于计时打卡:直接删除打卡记录即可,然后重新再打卡即可

打卡任务详情页

  • 月选项卡

    1. 本月打卡统计数据显示,包含:本月需打卡数、本月已打卡数、本月完成打卡数、本月打卡率、本月打卡完成率,本月获取积分数

    2. 数据折线图(本月每日)

    说明:

    1. 如果是打卡类型是单次打卡则无须显示;如果是如果打卡类型是计时或者计数,那么折线图显示对应的每日的时间/次数变化
    2. 数据直接从打卡任务记录表获取

    3. 显示本月的打卡日志

    打卡类型:单次,显示元素包含:打卡日期(格式:xxxx-xx-xx) 、打卡状态(完成打卡/未完成打卡)、打卡时长(格式:00:00:00,计时打卡特有)、打卡次数(格式:x次,计数打卡特有)、结算状态、结算积分,结算时对应的打卡任务配置快照

    1. 支持的功能操作:编辑、删除、打卡、补打卡、误打卡撤销、归档
  • 年选项卡

    1. 本年打卡统计数据显示,包含:本年需打卡数、本年已打卡数、本年完成打卡数、本年打卡率、本年打卡完成率,本年获取积分数

    2. 数据折线图(全年每日)

    说明:

    1. 如果是打卡类型是单次打卡则无须显示;如果是如果打卡类型是计时或者计数,那么折线图显示对应的每日的时间/次数变化

    2. 数据直接从打卡任务记录表获取

    3. 显示全年的打卡日志(需分页)

    打卡类型:单次,显示元素包含:打卡日期(格式:xxxx-xx-xx) 、打卡状态(完成打卡/未完成打卡)、打卡时长(格式:00:00:00,计时打卡特有)、打卡次数(格式:x次,计数打卡特有)、结算状态、结算积分,结算时对应的打卡任务配置快照

    1. 支持的功能操作:编辑、删除、打卡、补打卡、误打卡撤销、归档

数据统计图表

  • 图表选项卡

    1. 积分折线表,显示包含:每日积分的结算数(增加数量)、每日积分的消耗数量、每日剩余总积分

    2. 打卡任务数折线表,包含:总打卡任务数量、每日的打卡数量、每日完成的打卡任务数量

    说明:数据可以从打卡多任务记录表中获取

    1. 新用户折线表,即每日新增的用户数量,是特权用户才有权限查看
  • 打卡日志选项卡

    1. 日历显示完成的打卡数,如果为0则不显示

    2. 具体某日的打卡记录(通过打卡日历,直接在打卡任务记录表中筛选即可)

    说明:通过在打卡日历选择具体日期,然后直接在打卡任务记录表中筛选即可

积分商城

  1. 显示账户及其拥有的积分(基本户、一般户)
  2. 显示可兑换的奖励列表,显示元素包含:名称、兑换所需积分、兑换按钮
  3. 支持的功能操作:大乐透号码生成器、双色球号码生成器、兑换奖励

用户中心

  1. 显示用户的基本信息,显示元素包含:字符头像、昵称、昵称修改按钮、登录按钮

  2. 显示统计数据

    • 积分区,显示元素包括:总待使用积分、总已使用积分,总积分数
    • 彩票去,显示元素包括:总消费金额、总中奖金额

说明:数据从用户表中获取

  1. 显示可跳转页面

    • 积分结算记录
      1. 分页显示结算记录,显示元素包括:结算前的积分、结算后的积分、结算积分、结算日期
      2. 支持的功能操作:按时间范围(结算日期)筛选
    • 积分兑换记录
      1. 分页显示兑换记录,显示元素包括:兑换的奖励名称、兑换所需的积分、兑换时间
      2. 支持的功能操作:按时间范围(兑换时间)、奖励名称(全模糊)筛选
    • 彩票消费与中奖记录
      1. 分页显示彩票消费与中奖记录,显示元素包括:彩票来源、彩票金额,消费金额、中奖金额、记录时间
      2. 支持的功能操作:按时间范围(记录时间)、彩票来源、彩票金额筛选
    • 账户转账记录
      1. 分页显示转账记录,显示元素包括:转出账户、转入账户、涉及的积分、操作时间
    • 积分账户
      1. 显示所有账户,显示元素包括:账户名称、所拥有的积分
      2. 支持的功能操作:添加新账户、账户之间转账、一般户与可兑换奖励物的关联
    • 奖励列表
      1. 显示所有的可兑换奖励,显示元素包括:奖励的名称、所需兑换积分、自动兑换标识
      2. 支持的功能操作:添加新奖励、编辑、删除
    • 免责声明
    • 关于我们
  2. 支持的功能操作:昵称修改、退出登录、登录

说明:登录时,只需要记录昵称和微信openId即可

系统

定时任务
  1. 自动结算

  2. 自动归档

  3. 自动打卡,按最低完成标准打卡

  4. 自动兑换,按设定的兑换次数进行自动兑换,优先从专用账户兑换,再从基本账户兑换

注:如果奖励关联了专用账户,需要校验兑换账户和

  1. 打卡任务-月统计,包含:本月需打卡数、本月已打卡数、本月完成打卡数、本月打卡率、本月打卡完成率,本月获取积分数

  2. 打卡任务-年统计,包含:本年需打卡数、本年已打卡数、本年完成打卡数、本年打卡率、本年打卡完成率,本年获取积分数

  3. 积分统计,包含:每日积分的结算数(增加数量)、每日积分的消耗数量、每日剩余总积分

  4. 新用户数量统计

  5. 自动删除无使用的数据

运维接口
  1. 清除缓存

  2. 调起定时任务

  3. 手动结算接口,注:需要防止重复结算

  4. 初始化逻辑:打卡任务记录表(punch_in_task_history)中的连续状态、连续时间和结算的积分需要用代码进行初始化

初始化后需要把对应的字段改回去

定时任务

注:数据库备份使用的是gobackup,时间:每晚凌晨5点

定时任务名称 执行时间 cron表达式 实现类
拉取全年日历数据 每年1月1日零点零一秒 1 0 0 1 1 ? CalendarTask
结算积分 每天凌晨0点10分 0 10 0 * * ? SettlePointsTask
结算后积分分发 每天凌晨0点40分 0 40 0 * * ? SettleDistributeTask
打卡任务自动归档 每天凌晨1点05分 0 5 1 * * ? PiTaskAutoArchiveTask
打卡任务自动打卡 每天凌晨1点15分 0 15 1 * * ? PiTaskAutoPunchInTask
奖励自动兑换 每天凌晨1点30分 0 30 1 * * ? RewardAutoExchangeTask
新用户数据统计 每天凌晨2点 0 0 2 * * ? StatNewUserTask
积分数据统计 每天凌晨2点15分 0 15 2 * * ? StatPointsTask
任务数据统计(周,月,年) 每天凌晨2点30分 0 30 2 * * ? StatTask

字典

刮刮乐来源

字典名称:刮刮乐来源

字典编码:LOTTERY_SCRATCH_SOURCE

字典项:

字典项编码 字典名称
WELFARE_SCRATCH 福利彩票
SPORTS_SCRATCH 体育彩票

福利彩票刮刮乐种类

字典名称:福利彩票刮刮乐种类

字典编码:WELFARE_SCRATCH

字典项

字典项编码 字典名称
XINGYUN88 幸运88
CHAOGEILI 超给力
XIXIANGFENG 喜相逢

体育彩票刮刮乐种类

字典名称:体育彩票刮刮乐种类

字典编码:SPORTS_SCRATCH

字典项

字典项编码 字典名称

刮刮乐动作类型

字典名称:刮刮乐动作类型

字典编码:SCRATCH_ACTION_TYPE

字典项

字典项编码 字典名称
0 投入
1 中奖

启用状态标志

字典名称:启用状态标志

字典编码:ENABLE_STATUS

字典项

字典项编码 字典名称
0 关闭
1 启用

打卡类型

字典名称:打卡类型

字典编码:PUNCH_IN_CATEGORY

字典项

字典项编码 字典名称
0 单次打卡
1 计数
2 计时

打卡比较规则

字典名称:打卡比较规则

字典编码:PUNCH_IN_RULE

字典项

字典项编码 字典名称
0 大于等于
1 小于等于

表设计

用户表

表名:user

字段 类型 描述
id bigint 主键
open_id varchar(128) 微信小程序openId
user_category varchar(10) 用户类型(普通-NORMAL,管理员-ADMIN)
nickname varchar(100) 昵称
total_points int 总积分
unused_points int 未使用积分
used_points int 已使用积分
total_consume_amount decimal(10,2) 总消费金额(元)
total_win_amount decimal(10,2) 总中奖金额(元)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务表

表名:pi_task

字段 类型 描述 索引
id bigint 主键 主键索引
unique_id bigint 任务唯一ID 普通索引
task_status varchar(10) 任务状态(活跃-ACTIVE,归档-ARCHIVE,删除-DELETE)
task_version int 任务修改版本
task_name varchar(128) 任务名称
description varchar(300) 任务描述
points int 奖励的积分(基本)
auto_archive_date date 自动归档日期
archive_status varchar(10) 是否归档(活跃-ACTIVE,归档-ARCHIVE)
manual_archive_date date 手动归档日期
display_order int 显示顺序
display_time time 显示时间
punch_in_method varchar(10) 打卡方式(单次打卡-SINGLE,计数-COUNT、计时-TIMING)
compare_rule varchar(10) 比较规则(大于等于-GTE,小于等于-LTE)
count_track int 次数记录
time_track time 时间记录
holiday_status varchar(10) 是否启用节假日奖励(ENABLED-启用,DISABLED-关闭)
holiday_count_track int 次数记录(节假日用)
holiday_time_track time 时间记录(节假日用)
full_attendance_status varchar(10) 是否启用全勤奖励(ENABLED-启用,DISABLED-关闭)
full_attendance_period varchar(10) 全勤周期(周-WEEK,月-MONTH)
full_attendance_fault_tolerance_cnt int 全勤容错次数
repeat_category varchar(10) 重复周期类型(每日-EVERYDAY、法定工作日-WORKDAY、法定节假日(含周末)-HOLIDAY、自定义(周一至周日)-CUSTOM)
repeat_custom_day varchar(13) 自定义重复日(周一-1,周二-2,周三-3,周四-4,周五-5,周六-6,周日-7)
extra_method varchar(10) 额外奖励方式(无-NONE,固定-FIXED,区间-INTERVAL)
extra_time_step int 额外的时间间隔(单位:分钟)
extra_points int 奖励的积分(额外)
continue_status varchar(10) 是否启用连续规则(ENABLED-启用,DISABLED-关闭)
grace_day int 宽限期(单位:天)
continue_interrupted_count int 连续中断次数
penalty_day int 惩罚天数(单位:天)
auto_status varchar(10) 是否启用自动打卡(ENABLED-启用,DISABLED-关闭)
task_points_status varchar(10) 是否启用任务积分计算(ENABLED-启用,DISABLED-关闭)
created_by bigint 创建人 普通索引
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务拓展表

表名:pi_task_ext

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
task_id bigint 打卡任务ID 普通索引
dimension varchar(10) 使用维度(一天-ONE_DAY,多天-MULTI_DAY)
initial_value int 起始值(单位:次)
extra_points int 奖励的积分(额外)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡多任务表

表名:pi_multi_task

字段 类型 描述 索引
id bigint 主键 主键索引
unique_id bigint 打卡多任务唯一ID 普通索引
user_id bigint 用户ID 普通索引
task_status varchar(10) 任务状态(活跃-ACTIVE,归档-ARCHIVE,删除-DELETE)
task_version int 任务修改版本
task_points_status varchar(10) 是否启用多任务积分计算(ENABLED-启用,DISABLED-关闭)
punch_in_done_count int 打卡完成次数
points int 奖励的积分(基本)
continue_status varchar(10) 是否启用连续规则(ENABLED-启用,DISABLED-关闭)
grace_day int 宽限期(单位:天)
continue_interrupted_count int 连续中断次数
penalty_day int 惩罚天数(单位:天)
extra_method varchar(10) 额外奖励方式(无-NONE,固定-FIXED,区间-INTERVAL)
extra_points int 奖励的积分(额外)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡多任务拓展表

表名:pi_multi_task_ext

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
multi_task_id bigint 多任务ID 普通索引
dimension varchar(10) 使用维度(一天-ONE_DAY,多天-MULTI_DAY)
initial_value int 起始值(单位:次)
extra_points int 奖励的积分(额外)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡多任务关联表

表名:pi_multi_task_rela

说明:这里的打卡多任务ID和打卡任务ID均不用唯一ID,用于记录对应的快照关系

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
multi_task_id bigint 打卡多任务ID 普通索引
task_id bigint 打卡任务ID 普通索引
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务打卡记录表

表名:pi_task_history

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
task_unique_id bigint 打卡任务唯一ID 普通索引
punch_in_date varchar(10) 打卡日期 普通索引
count_track int 次数记录
time_track time 时间记录
task_id bigint 打卡任务ID
punch_in_result varchar(10) 打卡结果(DONE-完成,UNDONE-未完成)
created_by bigint 创建人
creation_time timestamp 创建时间 普通索引
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡多任务打卡记录表

表名:pi_multi_task_history

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
multi_task_unique_id bigint 打卡多任务唯一ID 普通索引
punch_in_date varchar(10) 打卡日期 普通索引
total_task_count int 总任务数
punch_in_done_count int 打卡完成数
task_continue_status varchar(20) 任务连续打卡状态(连续打卡-CONTINUE、中断-INTERRUPTED)
task_continue_day int 任务连续天数,第一天开始就等于1
continue_stage varchar(10) 连续阶段(宽限期-GRACE_STAGE,正常打卡期-NORMAL_STAGE,惩罚期-PENALTY_STAGE)
stage_start_date date 阶段开始日期
stage_end_date date 阶段结束日期
continue_interrupted_count int 连续中断次数
punch_in_result varchar(10) 打卡结果(DONE-完成,UNDONE-未完成)
settle_result varchar(10) 结算结果(未结算-UNSETTLED,已结算-SETTLED)
settle_pi_multi_task_id bigint 结算时的打卡多任务ID
settle_task_history_id bigint 结算任务执行记录ID 普通索引
settle_points int 结算奖励积分
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务状态表

表名:pi_status

作用:multi_task_unique_id和task_unique_id字段不能同时出现,是一张公用表,multi_task_unique_id出现时是多任务的打卡状态,task_unique_id出现时是单任务的打卡状态

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
multi_task_unique_id bigint 打卡多任务唯一ID 普通索引
multi_task_id bigint 打卡多任务ID
task_unique_id bigint 打卡任务唯一ID 普通索引
taks_id bigint 打卡任务ID
status_date date 记录状态的时间
task_continue_status varchar(20) 任务连续打卡状态(连续打卡-CONTINUE、中断-INTERRUPTED)
task_continue_day int 任务连续天数,第一天开始就等于1
continue_stage varchar(10) 连续阶段(宽限期-GRACE_STAGE,正常打卡期-NORMAL_STAGE,惩罚期-PENALTY_STAGE)
stage_start_date date 阶段开始日期
stage_end_date date 阶段结束日期
continue_interrupted_count int 连续中断次数
repeat_category varchar(10) 重复周期类型(每日-EVERYDAY、法定工作日-WORKDAY、法定节假日(含周末)-HOLIDAY、自定义(周一至周日)-CUSTOM)
repeat_custom_day varchar(13) 自定义重复日(周一-1,周二-2,周三-3,周四-4,周五-5,周六-6,周日-7)
repeat_start_date_in_week date 本周重复周期开始时间
repeat_prev_total_count_in_week int 本周需打卡数(变更重复类型前)
repeat_start_date_in_month date 本月重复周期开始时间
repeat_prev_total_count_in_month int 本月需打卡数(变更重复类型前)
stat_time_in_week char(8) 本周时间(格式:yyyy-W周数)
punch_in_total_count_in_week int 本周需打卡数
punch_in_count_in_week int 本周已打卡数
punch_in_done_count_in_week int 本周完成打卡数
points_in_week int 本周获取积分数
stat_time_in_month char(7) 本月时间(格式:yyyy-MM)
punch_in_total_count_in_month int 本月需打卡数
punch_in_count_in_month int 本月已打卡数
punch_in_done_count_in_month int 本月完成打卡数
points_in_month int 本月获取积分数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务状态记录表

表名:pi_status_history

作用:multi_task_unique_id和task_unique_id字段不能同时出现,是一张公用表,multi_task_unique_id出现时是多任务的打卡状态,task_unique_id出现时是单任务的打卡状态

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户ID 普通索引
multi_task_unique_id bigint 打卡多任务唯一ID 普通索引
multi_task_id bigint 打卡多任务ID
task_unique_id bigint 打卡任务唯一ID 普通索引
taks_id bigint 打卡任务ID
status_date date 记录状态的时间
task_continue_status varchar(20) 任务连续打卡状态(连续打卡-CONTINUE、中断-INTERRUPTED)
task_continue_day int 任务连续天数,第一天开始就等于1
continue_stage varchar(10) 连续阶段(宽限期-GRACE_STAGE,正常打卡期-NORMAL_STAGE,惩罚期-PENALTY_STAGE)
stage_start_date date 阶段开始日期
stage_end_date date 阶段结束日期
continue_interrupted_count int 连续中断次数
repeat_category varchar(10) 重复周期类型(每日-EVERYDAY、法定工作日-WORKDAY、法定节假日(含周末)-HOLIDAY、自定义(周一至周日)-CUSTOM)
repeat_custom_day varchar(13) 自定义重复日(周一-1,周二-2,周三-3,周四-4,周五-5,周六-6,周日-7)
repeat_start_date_in_week date 本周重复周期开始时间
repeat_prev_total_count_in_week int 本周需打卡数(变更重复类型前)
repeat_start_date_in_month date 本月重复周期开始时间
repeat_prev_total_count_in_month int 本月需打卡数(变更重复类型前)
stat_time_in_week char(8) 本周时间(格式:yyyy-W周数)
punch_in_total_count_in_week int 本周需打卡数
punch_in_count_in_week int 本周已打卡数
punch_in_done_count_in_week int 本周完成打卡数
points_in_week int 本周获取积分数
stat_time_in_month char(7) 本月时间(格式:yyyy-MM)
punch_in_total_count_in_month int 本月需打卡数
punch_in_count_in_month int 本月已打卡数
punch_in_done_count_in_month int 本月完成打卡数
points_in_month int 本月获取积分数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

结算任务执行记录表

表名:settle_task_history

字段 类型 描述 索引
id bigint 主键 主键索引
settle_date varchar(10) 结算日期 普通索引
processed_total_num int 待处理的总结算数量
processed_settle_num int 处理已结算数量
processed_unsettle_num int 处理没结算数量
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

结算用户记录表

表名:settle_user_history

字段 类型 描述 索引
id bigint 主键 主键索引
settle_task_history_id bigint 结算任务执行记录ID 普通索引
user_id bigint 用户表主键 普通索引
settle_date varchar(10) 结算日期 普通索引
settle_points int 总结算积分
before_settle_points int 结算前用户拥有的积分
after_settle_points int 结算后用户拥有的积分
settle_result varchar(20) 结算结果(已结算-SETTLED,撤销结算-REVOKE_SETTLED)
distribute_status varchar(20) 积分下发状态(已分发-DISTRIBUTE,未分发-NOT_DISTRIBUTE)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

结算任务关联记录表

表名:settle_task_rela_history

字段 类型 描述 索引
id bigint 主键 主键索引
settle_task_history_id bigint 结算任务执行记录ID 普通索引
settle_user_history_id bigint 结算用户记录id 普通索引
user_id bigint 用户表主键 普通索引
settle_date varchar(10) 结算日期 普通索引
pi_task_id bigint 单任务ID
pi_task_unique_id bigint 单任务唯一ID
pi_task_history_id bigint 单任务打卡记录ID
settle_result varchar(20) 结算结果(已结算-SETTLED,无需结算-NOT_SETTLED)
settle_points int 结算积分
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

系统字典表

表名:sys_dict

字段 类型 描述 索引
id bigint 主键 主键索引
dict_code varchar(100) 字典编码 普通索引
dict_name varchar(100) 字典名称
description varchar(200) 描述
status varchar(10) 状态(ENABLED-启用,DISABLED-失效)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

系统字典项表

表名:sys_dict_item

字段 类型 描述 索引
id bigint 主键 主键索引
dict_id bigint 字典表主键 普通索引
data_type varchar(10) 数据类型(STRING-字符串,INTEGER-整型数值)
item_code varchar(100) 字典项编码 普通索引
item_name varchar(100) 字典项名称
description varchar(200) 描述
status varchar(10) 状态(ENABLED-启用,DISABLED-失效)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

系统日历表

表名:sys_calendar

字段 类型 描述 索引
id bigint 主键 主键索引
gregorian_date char(10) 公历日期,格式:yyyy-MM-dd 普通索引
lunar_date char(10) 农历日期,格式:yyyy-MM-dd
week_day int 周内天数(1-7),周一为1,周日为7
status char(7) 状态:WORKDAY-上班, HOLIDAY-放假;上班:含正常工作日及补班;放假:含周末及节假日。
festival varhcar(30) 国家法定节日:元旦节, 春节, 清明节, 劳动节, 端午节, 中秋节, 国庆节。
bad_day char(1) 是否补班:Y-是,N-否。需要补班,真是难受的一天!仅当需要补班时有该字段。
description varhcar(300) 描述,表示什么时候补班,例如劳动节前补班、国庆节后补班等。仅需要补班时有该字段。
statutory char(1) 是否法定节假日:Y-是,N-否。如果是法定节假日则返回1,仅当是法定节假日时有该字段。
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

系统定时任务执行配置表

表名:sys_schedule_task

字段 类型 描述
id bigint 主键
task_code varchar(100) 定时任务编码
task_name varchar(100) 定时任务名称
execute_status varchar(10) 是否启用定时任务(ENABLED-启用、DISABLED-关闭)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

系统定时任务执行记录表

表名:sys_schedule_task_history

字段 类型 描述 索引
id bigint 主键 主键索引
task_code varchar(100) 定时任务编码
task_name varchar(100) 定时任务名称
launch_method varchar(10) 启动方式(AUTO-自动,MANUAL-手动)
start_time timestamp 任务开始时间
end_time timestamp 任务结束时间
process_status varchar(10) 执行状态(RUNNING-执行中,SUCCESS-成功,FAIL-失败)
error_message varchar(5000) 错误信息
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

账户

表名:account

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
account_name varchar(100) 账户名称
account_category varchar(30) 账户类型(BASIC-基本户,GENERAL-一般户)
points int 奖励积分
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

账户转账记录

表名:account_transfer_history

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
sender_account_id bigint 转出账户id
recipient_account_id bigint 转入账户id
transfer_category varchar(10) 转账类型(转账-TRANSFER,结算-SETTLE)
transfer_points int 转账积分
sa_points_before_transfer int 转出账户转出前积分
sa_points_after_transfer int 转出账户转出后积分
ra_points_before_transfer int 转入账户转入前积分
ra_points_after_transfer int 转入账户转入后积分
created_by bigint 创建人
creation_time timestamp 创建时间 普通索引
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

奖励

表名:reward

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
reward_unique_id bigint 奖励唯一ID
reward_status varchar(10) 奖励状态(活跃-ACTIVE,归档-ARCHIVE,删除-DELETE)
reward_version int 奖励修改版本
reward_name varchar(100) 奖励名称
exchange_points int 兑换所需积分
auto_status varchar(10) 是否启用自动兑换(ENABLED-启用,DISABLED-关闭)
auto_exchange_count int 自动兑换数量
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

奖励与账户关联表

表名:reward_account_rela

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
reward_unique_id bigint 奖励唯一id
account_id bigint 账户id
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

奖励兑换记录

表名:reward_exchange_history

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
reward_id bigint 奖励id
exchange_method varchar(10) 兑换类型(手动兑换-MANUAL,自动兑换-AUTO)
exchange_count int 兑换次数
exchange_total_points int 兑换所需总积分
account_id bigint 兑换使用的账户id
account_points_before_exchange int 兑换前账户中的积分
account_points_after_exchange int 兑换后账户中的积分
unused_points_before_exchange int 兑换前用户未使用的积分
unused_points_after_exchange int 兑换后用户未使用的积分
used_points_before_exchange int 兑换前用户已使用的积分
used_points_after_exchange int 兑换后用户已使用的积分
created_by bigint 创建人
creation_time timestamp 创建时间 普通索引
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务周数据统计

表名:stat_pi_task_week

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
task_unique_id bigint 任务唯一ID 普通索引
stat_time char(8) 统计时间(格式:yyyy-W周数) 普通索引
punch_in_total_count int 本周需打卡数
punch_in_count int 本周已打卡数
punch_in_done_count int 本周完成打卡数
punch_in_rate decimal(5,2) 本周打卡率
punch_in_done_rate decimal(5,2) 本周打卡完成率
points int 本周获取积分数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务月数据统计

表名:stat_pi_task_month

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
task_unique_id bigint 任务唯一ID 普通索引
stat_time char(7) 统计时间(格式:yyyy-MM) 普通索引
punch_in_total_count int 本月需打卡数
punch_in_count int 本月已打卡数
punch_in_done_count int 本月完成打卡数
punch_in_rate decimal(5,2) 本月打卡率
punch_in_done_rate decimal(5,2) 本月打卡完成率
points int 本月获取积分数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务年数据统计

表名:stat_pi_task_year

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
task_unique_id bigint 任务唯一ID 普通索引
stat_time char(4) 统计时间(格式:yyyy) 普通索引
punch_in_total_count int 本年需打卡数
punch_in_count int 本年已打卡数
punch_in_done_count int 本年完成打卡数
punch_in_rate decimal(5,2) 本年打卡率
punch_in_done_rate decimal(5,2) 本年打卡完成率
points int 本年获取积分数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

积分数据统计

表名:stat_points

字段 类型 描述 索引
id bigint 主键 主键索引
user_id bigint 用户id 普通索引
stat_time char(10) 统计时间(格式:yyyy-MM-dd) 普通索引
settle_points int 每日积分的结算数
consume_points int 每日积分的消耗数量
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

新用户数据统计

表名:stat_new_user

字段 类型 描述 索引
id bigint 主键 主键索引
stat_time char(10) 统计时间(格式:yyyy-MM-dd) 普通索引
new_user_count int 新用户数量
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更新人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

开发参考