# 打卡结算 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. 列表需要根据排序进行显示 2. 支持的功能操作:创建打卡任务、打卡 #### 打卡任务列表 1. 显示总的打卡任务数量 2. 显示总的打卡任务列表 显示元素:任务名称、任务描述、奖励的基本积分数、节假日奖励标识、全勤奖励标识、自动打卡标识 注意点: 1. 列表需要根据排序进行显示 2. 查询时可以筛选是否显示已归档任务,默认不显示 2. 支持的功能操作:创建打卡任务、编辑、删除、打卡、补打卡、误打卡撤销、归档 * 补打卡规则: 1. 如果完全没有打过卡:按照当时的打卡规则,直接生成一条新的打卡记录和结算记录 2. 如果打过卡但是未完成的 * 对于单次打卡:不存在这种情况 * 对于计数打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位 * 对于计时打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位 * 误打卡撤销规则: 1. 只允许当天撤销 2. 数据变化 对于单次打卡:直接删除打卡记录即可 对于计数打卡:直接扣减次数(-1)即可,次数变成0即删除打卡记录 对于计时打卡:直接删除打卡记录即可,然后重新再打卡即可 #### 打卡任务详情页 * 月选项卡 1. 本月打卡统计数据显示,包含:本月需打卡数、本月已打卡数、本月完成打卡数、本月打卡率、本月打卡完成率,本月获取积分数 2. 数据折线图(本月每日) 说明: 1. 如果是打卡类型是单次打卡则无须显示;如果是如果打卡类型是计时或者计数,那么折线图显示对应的每日的时间/次数变化 2. 数据直接从打卡任务记录表获取 3. 显示本月的打卡日志 打卡类型:单次,显示元素包含:打卡日期(格式:xxxx-xx-xx) 、打卡状态(完成打卡/未完成打卡)、打卡时长(格式:00:00:00,计时打卡特有)、打卡次数(格式:x次,计数打卡特有)、结算状态、结算积分,结算时对应的打卡任务配置快照 4. 支持的功能操作:编辑、删除、打卡、补打卡、误打卡撤销、归档 * 年选项卡 1. 本年打卡统计数据显示,包含:本年需打卡数、本年已打卡数、本年完成打卡数、本年打卡率、本年打卡完成率,本年获取积分数 2. 数据折线图(全年每日) 说明: 1. 如果是打卡类型是单次打卡则无须显示;如果是如果打卡类型是计时或者计数,那么折线图显示对应的每日的时间/次数变化 2. 数据直接从打卡任务记录表获取 3. 显示全年的打卡日志(需分页) 打卡类型:单次,显示元素包含:打卡日期(格式:xxxx-xx-xx) 、打卡状态(完成打卡/未完成打卡)、打卡时长(格式:00:00:00,计时打卡特有)、打卡次数(格式:x次,计数打卡特有)、结算状态、结算积分,结算时对应的打卡任务配置快照 4. 支持的功能操作:编辑、删除、打卡、补打卡、误打卡撤销、归档 #### 数据统计图表 * 图表选项卡 1. 积分折线表,显示包含:每日积分的结算数(增加数量)、每日积分的消耗数量、每日剩余总积分 2. 打卡任务数折线表,包含:总打卡任务数量、每日的打卡数量、每日完成的打卡任务数量 说明:数据可以从打卡多任务记录表中获取 3. 新用户折线表,即每日新增的用户数量,是**特权用户才有权限查看** * 打卡日志选项卡 1. 日历显示完成的打卡数,如果为0则不显示 2. 具体某日的打卡记录(通过打卡日历,直接在打卡任务记录表中筛选即可) 说明:通过在打卡日历选择具体日期,然后直接在打卡任务记录表中筛选即可 #### 积分商城 1. 显示账户及其拥有的积分(基本户、一般户) 2. 显示可兑换的奖励列表,显示元素包含:名称、兑换所需积分、兑换按钮 3. 支持的功能操作:大乐透号码生成器、双色球号码生成器、兑换奖励 #### 用户中心 1. 显示用户的基本信息,显示元素包含:字符头像、昵称、昵称修改按钮、登录按钮 2. 显示统计数据 * 积分区,显示元素包括:总待使用积分、总已使用积分,总积分数 * 彩票去,显示元素包括:总消费金额、总中奖金额 说明:数据从用户表中获取 3. 显示可跳转页面 * 积分结算记录 1. 分页显示结算记录,显示元素包括:结算前的积分、结算后的积分、结算积分、结算日期 2. 支持的功能操作:按时间范围(结算日期)筛选 * 积分兑换记录 1. 分页显示兑换记录,显示元素包括:兑换的奖励名称、兑换所需的积分、兑换时间 2. 支持的功能操作:按时间范围(兑换时间)、奖励名称(全模糊)筛选 * 彩票消费与中奖记录 1. 分页显示彩票消费与中奖记录,显示元素包括:彩票来源、彩票金额,消费金额、中奖金额、记录时间 2. 支持的功能操作:按时间范围(记录时间)、彩票来源、彩票金额筛选 * 账户转账记录 1. 分页显示转账记录,显示元素包括:转出账户、转入账户、涉及的积分、操作时间 * 积分账户 1. 显示所有账户,显示元素包括:账户名称、所拥有的积分 2. 支持的功能操作:添加新账户、账户之间转账、一般户与可兑换奖励物的关联 * 奖励列表 1. 显示所有的可兑换奖励,显示元素包括:奖励的名称、所需兑换积分、自动兑换标识 2. 支持的功能操作:添加新奖励、编辑、删除 * 免责声明 * 关于我们 4. 支持的功能操作:昵称修改、退出登录、登录 说明:登录时,只需要记录昵称和微信openId即可 #### 系统 ##### 定时任务 1. 自动结算 2. 自动归档 3. 自动打卡,按最低完成标准打卡 4. 自动兑换,按设定的兑换次数进行自动兑换,优先从专用账户兑换,再从基本账户兑换 注:如果奖励关联了专用账户,需要校验兑换账户和 5. 打卡任务-月统计,包含:本月需打卡数、本月已打卡数、本月完成打卡数、本月打卡率、本月打卡完成率,本月获取积分数 6. 打卡任务-年统计,包含:本年需打卡数、本年已打卡数、本年完成打卡数、本年打卡率、本年打卡完成率,本年获取积分数 7. 积分统计,包含:每日积分的结算数(增加数量)、每日积分的消耗数量、每日剩余总积分 8. 新用户数量统计 9. 自动删除无使用的数据 ##### 运维接口 1. 清除缓存 2. 调起定时任务 3. 手动结算接口,注:需要**防止重复结算** 4. 初始化逻辑:打卡任务记录表(punch_in_task_history)中的连续状态、连续时间和结算的积分需要用代码进行初始化 初始化后需要把对应的字段改回去 ## 定时任务 | 定时任务名称 | 执行时间 | cron表达式 | 实现类 | | ------------ | ------------------------ | ----------- | ------------ | | 日历定时任务 | 每年1月1日零点零一秒执行 | 1 0 0 1 1 ? | CalendarTask | | | | | | | | | | | ## 字典 ### 刮刮乐来源 字典名称:刮刮乐来源 字典编码: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 | 小于等于 | ## 表设计 ![](%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3.assets/%E6%89%93%E5%8D%A1%E7%BB%93%E7%AE%97%E9%A1%B9%E7%9B%AE.png) ### 用户表 表名:user | 字段 | 类型 | 描述 | | -------------------- | ------------- | ---------------------------------- | | id | bigint | 主键 | | open_id | varchar(128) | 微信小程序openId | | 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) | | | task_version | int | 任务修改版本 | | | task_name | varchar(128) | 任务名称 | | | description | varchar(300) | 任务描述 | | | points | int | 奖励的积分(基本) | | | end_date | date | 结束日期 | | | archive_status | varchar(10) | 是否归档(活跃-ACTIVE,归档-ARCHIVE) | | | 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) | | | 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_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_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_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_points_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 | 结算后用户拥有的积分 | | | 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-已删除) | | ### 物品消费与中奖记录 表名:item_consume_win_history | 字段 | 类型 | 描述 | 索引 | | ---------------- | ------------- | ------------------------------------------------------------ | -------- | | id | bigint | 主键 | 主键索引 | | user_id | bigint | 用户ID | 普通索引 | | action | varchar(30) | 动作(消费-CONSUME,中奖-WIN,撤销消费-REVERSE_CONSUME,撤销中奖-REVERSE_WIN) | | | source | varchar(100) | 来源 | | | category | varchar(100) | 种类 | | | 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-已删除) | | ### 系统字典表 表名: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) | | | 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 | 兑换后账户中的积分 | | | 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 | 每日积分的消耗数量 | | | total_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-已删除) | | ## 开发参考 * [两种优雅的获取当前登录用户ID的方式](https://blog.csdn.net/tomorrow9813/article/details/131736382) * [学会自己编写Mybatis插件(拦截器)实现自定义需求](https://juejin.cn/post/7220321558103097404#heading-3) * [Mybatis拦截器教程及几个实用自定义拦截器分享](https://juejin.cn/post/7242129949179248700#heading-5) * [tk.mybatis 2.1.15 如何将枚举类型在类中进行自动转换](https://blog.csdn.net/qq_42766445/article/details/134196790)