|
|
@@ -22,7 +22,11 @@ ui设计工具:即时设计
|
|
|
|
|
|
|
|
|
|
|
|
-#### 打卡
|
|
|
+#### 打卡规则
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+##### 单任务
|
|
|
|
|
|
* 打卡类型:计时、计数、单次打卡(计数的特例,只需计一次数)
|
|
|
* 单位:次数、分钟
|
|
|
@@ -36,16 +40,13 @@ ui设计工具:即时设计
|
|
|
|
|
|
|
|
|
|
|
|
-#### 获取积分奖励的方式
|
|
|
-
|
|
|
-1. 单个任务**当天**完成打卡则给予奖励
|
|
|
-2. 单个任务**法定节假日(含周末)**双倍奖励
|
|
|
-3. 单个任务全勤双倍奖励,即在**一个周期内**打卡完成数在容错范围内则给予奖励
|
|
|
-4. 单个任务连续完成打卡则给予额外奖励,按照**连续打卡**完成天数**超过N天**k开始进行计算
|
|
|
-5. 多个任务完成打卡则给予额外奖励,按照**当天打卡**完成数**超过固定值**进行计算
|
|
|
-6. 多个任务连续完成打卡则给予奖励,按照**连续打卡**完成数**超过N天**开始进行计算
|
|
|
-
|
|
|
+##### 多任务
|
|
|
|
|
|
+* 打卡类型:任务完成数
|
|
|
+* 单位:任务数
|
|
|
+* 比较规则:大于等于
|
|
|
+* 比较的目标:用于判断是否完成打卡
|
|
|
+* 重复频率:每天
|
|
|
|
|
|
|
|
|
|
|
|
@@ -53,36 +54,47 @@ ui设计工具:即时设计
|
|
|
|
|
|
|
|
|
|
|
|
-注:在连续完成的时候,需要关注的是完成的天数,其它不用理会
|
|
|
+| 任务类型 | 时间范围 | 启用状态(启用/禁用/可选) | 计量单位 | 前置判断 | 基本奖励 | 额外奖励 | 全勤奖励 | 节假日奖励 |
|
|
|
+| -------- | -------- | -------------------------- | ---------------- | -------- | -------- | -------- | -------- | ---------- |
|
|
|
+| 单任务 | 当天 | 启用 | 单次、计数、计时 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
|
+| 单任务 | 连续 | 可选 | 天数 | ✅ | | ✅ | | |
|
|
|
+| 多任务 | 当天 | 可选 | 任务数 | ✅ | ✅ | ✅ | | |
|
|
|
+| 多任务 | 连续 | 可选 | 天数 | ✅ | | ✅ | | |
|
|
|
|
|
|
|
|
|
|
|
|
-##### 积分计算公式
|
|
|
+##### 注意事项
|
|
|
|
|
|
-单个任务积分=基本积分+(可选)额外积分+(可选)连续完成额外积分+法定节假日(含周末)双倍奖励+全勤双倍奖励
|
|
|
+1. 在连续完成的时候,需要关注的是**连续完成的天数**,其它不用理会
|
|
|
+2. **多任务**的当天或连续的**启用状态是共用的**,即一个开启则整个开启
|
|
|
+3. 单任务(当天、连续)的**前置判断是共用**
|
|
|
+4. 多任务(当天、连续)的**前置判断是共用**
|
|
|
+5. 法定节假日包含周末
|
|
|
|
|
|
-多个任务积分=多任务额外积分+连续完成额外积分
|
|
|
|
|
|
-总积分=单个任务积分+(可选)多个任务积分
|
|
|
|
|
|
+##### 积分计算公式
|
|
|
|
|
|
+单个任务积分=基本积分+额外积分+法定节假日(含周末)双倍奖励+全勤双倍奖励+连续完成额外积分
|
|
|
|
|
|
-说明:
|
|
|
+多个任务积分=基本积分+额外积分+连续完成额外积分
|
|
|
|
|
|
-* 基本积分:满足打卡比较条件就能获得基本积分
|
|
|
+总积分=单个任务积分+多个任务积分
|
|
|
|
|
|
-* 额外积分:根据新的比较单位(X次,Y分钟,完成数、完成率)进行判断,完成一次就获得一次额外积分
|
|
|
- * 固定积分:额外打一次卡就给一次固定积分,本质是动态积分的特例
|
|
|
|
|
|
- 例子:打卡10次,前5次是基本的,后5次是额外的,积分区间:基本积分5;x>5,奖励积分10;其中的x是打卡次数。共计积分:5+5x5=30积分
|
|
|
|
|
|
- * 动态积分:根据不同的区间,给对应的积分
|
|
|
+##### 获取积分奖励的方式
|
|
|
|
|
|
- 例子:打卡10次,前5次是基本的,后5次是额外的,积分区间:基本积分5;6≤x≤8,奖励积分10;9≤x≤10,奖励积分15;其中的x是打卡次数。共计积分:5+10x3+15x2=65积分
|
|
|
+1. 单个任务**当天**完成打卡则给予奖励
|
|
|
+2. 单个任务**法定节假日(含周末)**双倍奖励
|
|
|
+3. 单个任务全勤双倍奖励,即在**一个周期内**打卡完成数在容错范围内则给予奖励
|
|
|
+4. 单个任务连续完成打卡则给予额外奖励,按照**区间规则**进行计算
|
|
|
+5. 多个任务完成打卡则给予奖励
|
|
|
+6. 多个任务连续完成打卡则给予奖励,按照**区间规则**进行计算
|
|
|
|
|
|
|
|
|
|
|
|
-##### (可选)前置判断:
|
|
|
+##### 前置判断
|
|
|
|
|
|
1. 开始前有连续N天,不结算积分,不计算连续打卡天数
|
|
|
|
|
|
@@ -96,6 +108,36 @@ ui设计工具:即时设计
|
|
|
|
|
|
|
|
|
|
|
|
+##### 额外奖励计算
|
|
|
+
|
|
|
+* 计算方式:固定、区间
|
|
|
+
|
|
|
+* 计算前提:要把其它计量单位按规则转换为**具体数值**才能进行计算
|
|
|
+
|
|
|
+ * 计量单位:分钟,设15分钟为基本数值,额外时长60分钟,规则:额外时长➗基本数值=具体数值,即具体数值为4
|
|
|
+
|
|
|
+* 计算规则(假设已有具体数值)
|
|
|
+
|
|
|
+ * 固定计算:具体数值✖️固定奖励=额外积分
|
|
|
+
|
|
|
+ 例如:3✖️4=12
|
|
|
+
|
|
|
+ 具体数值:3,固定奖励:4,最后得出额外积分:12
|
|
|
+
|
|
|
+ * 区间计算:按照区间范围,**大于等于**区间起始值,则有区间内次数✖️区间奖励=区间总奖励,最后把区间总奖励汇总即可获得总奖励数
|
|
|
+
|
|
|
+ 例如:具体数值:12,根据区间规则计算得最后总奖励数:50。
|
|
|
+
|
|
|
+ | 区间起始值 | 区间奖励 | 是否满足区间条件<br />(需大于等于区间起始值) | 区间内次数 | 区间总奖励 |
|
|
|
+ | ---------- | -------- | ---------------------------------------------- | ---------- | ------------ |
|
|
|
+ | 1 | 1 | 是 | 5 | 1✖️5=5 |
|
|
|
+ | 6 | 5 | 是 | 5 | 5✖️5=25 |
|
|
|
+ | 11 | 10 | 是 | 2 | 2✖️10=20 |
|
|
|
+ | 15 | 15 | 否 | | |
|
|
|
+ | | | | | **合计:50** |
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
#### 积分账户
|
|
|
|
|
|
* 基本户:用于结算积分转入,或者兑换奖励
|
|
|
@@ -510,6 +552,7 @@ ui设计工具:即时设计
|
|
|
| interrupted_day | 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 | 最后更新人 | |
|
|
|
@@ -546,29 +589,30 @@ ui设计工具:即时设计
|
|
|
|
|
|
表名:punch_in_multi_task
|
|
|
|
|
|
-| 字段 | 类型 | 描述 | 索引 |
|
|
|
-| -------------------- | ------------ | -------------------------------------------------- | -------- |
|
|
|
-| id | bigint | 主键 | 主键索引 |
|
|
|
-| user_id | bigint | 用户ID | 普通索引 |
|
|
|
-| multi_task_unique_id | bigint | 打卡多任务唯一ID | 普通索引 |
|
|
|
-| multi_task_status | varchar(10) | 任务状态(活跃-ACTIVE,归档-ARCHIVE) | |
|
|
|
-| multi_task_version | int | 任务修改版本 | |
|
|
|
-| punch_in_method | varchar(10) | 打卡方式(次数-COUNT,比率-RATE) | |
|
|
|
-| punch_in_done_count | int | 打卡完成次数 | |
|
|
|
-| punch_in_done_rate | decimal(5,2) | 打卡完成率 | |
|
|
|
-| points | int | 奖励的积分(基本) | |
|
|
|
-| grace_status | varchar(10) | 是否启用宽限期(ENABLED-启用,DISABLED-关闭) | |
|
|
|
-| grace_day | int | 宽限期(单位:天) | |
|
|
|
-| interrupted_day | 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-已删除) | |
|
|
|
+| 字段 | 类型 | 描述 | 索引 |
|
|
|
+| -------------------- | ------------ | --------------------------------------------------- | -------- |
|
|
|
+| id | bigint | 主键 | 主键索引 |
|
|
|
+| user_id | bigint | 用户ID | 普通索引 |
|
|
|
+| multi_task_unique_id | bigint | 打卡多任务唯一ID | 普通索引 |
|
|
|
+| multi_task_status | varchar(10) | 任务状态(活跃-ACTIVE,归档-ARCHIVE) | |
|
|
|
+| multi_task_version | int | 任务修改版本 | |
|
|
|
+| task_points_status | varchar(10) | 是否启用多任务积分计算(ENABLED-启用,DISABLED-关闭) | |
|
|
|
+| punch_in_method | varchar(10) | 打卡方式(次数-COUNT,比率-RATE) | |
|
|
|
+| punch_in_done_count | int | 打卡完成次数 | |
|
|
|
+| punch_in_done_rate | decimal(5,2) | 打卡完成率 | |
|
|
|
+| points | int | 奖励的积分(基本) | |
|
|
|
+| grace_status | varchar(10) | 是否启用宽限期(ENABLED-启用,DISABLED-关闭) | |
|
|
|
+| grace_day | int | 宽限期(单位:天) | |
|
|
|
+| interrupted_day | 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-已删除) | |
|
|
|
|
|
|
|
|
|
|
|
|
@@ -618,27 +662,32 @@ ui设计工具:即时设计
|
|
|
|
|
|
表名:punch_in_task_history
|
|
|
|
|
|
-| 字段 | 类型 | 描述 | 索引 |
|
|
|
-| ----------------------- | ----------- | ------------------------------------------------------------ | -------- |
|
|
|
-| id | bigint | 主键 | 主键索引 |
|
|
|
-| user_id | bigint | 用户ID | 普通索引 |
|
|
|
-| punch_in_task_unique_id | bigint | 打卡任务唯一ID | 普通索引 |
|
|
|
-| punch_in_date | varchar(10) | 打卡日期 | 普通索引 |
|
|
|
-| punch_in_status | varchar(10) | 打卡状态(DONE-完成,UNDONE-未完成) | |
|
|
|
-| count_track | int | 次数记录 | |
|
|
|
-| time_track | time | 时间记录 | |
|
|
|
-| consecutive_status | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED) | |
|
|
|
-| consecutive_day | int | 连续天数,第一天开始就等于1 | |
|
|
|
-| settle_task_history_id | bigint | 结算任务执行记录ID | 普通索引 |
|
|
|
-| settle_status | varchar(20) | 结算状态(未结算-UNSETTLED,宽限期跳过J-GRACE_SKIP,惩罚跳过-PENALTY_SKIP,已结算-SETTLED) | |
|
|
|
-| settle_punch_in_task_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-已删除) | |
|
|
|
+| 字段 | 类型 | 描述 | 索引 |
|
|
|
+| ----------------------------- | ----------- | ------------------------------------------------------------ | -------- |
|
|
|
+| id | bigint | 主键 | 主键索引 |
|
|
|
+| user_id | bigint | 用户ID | 普通索引 |
|
|
|
+| punch_in_task_unique_id | bigint | 打卡任务唯一ID | 普通索引 |
|
|
|
+| punch_in_date | varchar(10) | 打卡日期 | 普通索引 |
|
|
|
+| punch_in_status | varchar(10) | 打卡状态(DONE-完成,UNDONE-未完成) | |
|
|
|
+| count_track | int | 次数记录 | |
|
|
|
+| time_track | time | 时间记录 | |
|
|
|
+| consecutive_status | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED) | |
|
|
|
+| consecutive_day | int | 连续天数,第一天开始就等于1 | |
|
|
|
+| settle_task_history_id | bigint | 结算任务执行记录ID | 普通索引 |
|
|
|
+| settle_status | varchar(20) | 结算状态(未结算-UNSETTLED,宽限期跳过J-GRACE_SKIP,惩罚跳过-PENALTY_SKIP,已结算-SETTLED) | |
|
|
|
+| settle_punch_in_task_id | bigint | 结算时的打卡任务ID | |
|
|
|
+| settle_points | int | 结算奖励积分 | |
|
|
|
+| settle_basic_points | int | | |
|
|
|
+| settle_extra_points | | | |
|
|
|
+| settle_full_attendance_points | | | |
|
|
|
+| settle_holiday_points | | | |
|
|
|
+| settle_task_points | | | |
|
|
|
+| created_by | bigint | 创建人 | |
|
|
|
+| creation_time | timestamp | 创建时间 | 普通索引 |
|
|
|
+| last_updated_by | bigint | 最后更新人 | |
|
|
|
+| last_update_time | timestamp | 最后更新时间 | |
|
|
|
+| version | bigint | 版本号 | |
|
|
|
+| delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | |
|
|
|
|
|
|
|
|
|
|
|
|
@@ -677,22 +726,22 @@ ui设计工具:即时设计
|
|
|
|
|
|
作用:punch_in_multi_task_unique_id和punch_in_task_unique_id字段不能同时出现,是一张公用表,punch_in_multi_task_unique_id出现时是多任务的打卡状态,punch_in_task_unique_id出现时是单任务的打卡状态
|
|
|
|
|
|
-| 字段 | 类型 | 描述 | 索引 |
|
|
|
-| ----------------------------- | ----------- | ------------------------------------------------ | -------- |
|
|
|
-| id | bigint | 主键 | 主键索引 |
|
|
|
-| user_id | bigint | 用户ID | 普通索引 |
|
|
|
-| punch_in_multi_task_unique_id | bigint | 打卡多任务唯一ID | 普通索引 |
|
|
|
-| punch_in_task_unique_id | bigint | 打卡任务唯一ID | 普通索引 |
|
|
|
-| consecutive_status | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED) | |
|
|
|
-| consecutive_day | int | 连续天数,第一天开始就等于1 | |
|
|
|
-| start_date | date | 开始日期 | |
|
|
|
-| end_date | date | 结束日期 | |
|
|
|
-| created_by | bigint | 创建人 | |
|
|
|
-| creation_time | timestamp | 创建时间 | |
|
|
|
-| last_updated_by | bigint | 最后更新人 | |
|
|
|
-| last_update_time | timestamp | 最后更新时间 | |
|
|
|
-| version | bigint | 版本号 | |
|
|
|
-| delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | |
|
|
|
+| 字段 | 类型 | 描述 | 索引 |
|
|
|
+| ----------------------------- | ----------- | ----------------------------------------------------- | -------- |
|
|
|
+| id | bigint | 主键 | 主键索引 |
|
|
|
+| user_id | bigint | 用户ID | 普通索引 |
|
|
|
+| punch_in_multi_task_unique_id | bigint | 打卡多任务唯一ID | 普通索引 |
|
|
|
+| punch_in_task_unique_id | bigint | 打卡任务唯一ID | 普通索引 |
|
|
|
+| consecutive_status | varchar(20) | 连续打卡状态(连续打卡-CONSECUTIVE、中断--INTERRUPTED) | |
|
|
|
+| consecutive_day | int | 连续天数,第一天开始就等于1 | |
|
|
|
+| start_date | date | 开始日期 | |
|
|
|
+| end_date | date | 结束日期 | |
|
|
|
+| created_by | bigint | 创建人 | |
|
|
|
+| creation_time | timestamp | 创建时间 | |
|
|
|
+| last_updated_by | bigint | 最后更新人 | |
|
|
|
+| last_update_time | timestamp | 最后更新时间 | |
|
|
|
+| version | bigint | 版本号 | |
|
|
|
+| delete_flag | tinyint | 逻辑删除标志(0-未删除,1-已删除) | |
|
|
|
|
|
|
|
|
|
|
|
|
@@ -937,6 +986,29 @@ ui设计工具:即时设计
|
|
|
|
|
|
|
|
|
|
|
|
+### 打卡任务周数据统计
|
|
|
+
|
|
|
+表名:punch_in_stats_week
|
|
|
+
|
|
|
+| 字段 | 类型 | 描述 | 索引 |
|
|
|
+| -------------------- | ------------ | ---------------------------------- | -------- |
|
|
|
+| id | bigint | 主键 | 主键索引 |
|
|
|
+| user_id | bigint | 用户id | 普通索引 |
|
|
|
+| task_unique_id | bigint | 任务唯一ID | 普通索引 |
|
|
|
+| stats_time | char(7) | 统计时间(格式: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-已删除) | |
|
|
|
+
|
|
|
|
|
|
|
|
|
### 打卡任务月数据统计
|