技术文档.md 21 KB

打卡结算

ui设计工具:即时设计

小程序框架:uniapp

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

数据库:mysql

数据库备份工具:gobackup

待增加功能

  1. 结算规则要支持节假日补充规则
  2. 打卡任务的年视图的统计功能

系统功能

  • 用户

    1. (已开发)微信用户登录

    说明:简单获取头像、微信openid、昵称,然后用于后台数据处理和前端显示即可

    1. (已开发)昵称修改

    2. (现阶段不支持该功能)头像修改

  • 打卡任务

    1. (已开发)查询当前用户拥有的打卡任务列表

    显示内容:任务名称、任务描述、奖励数、全勤奖励标识、周末奖励标识、本周打卡记录,今日打卡情况

    说明:今日打卡情况未完成时的状态,根据不同的打卡类型有不同的显示

    • 打卡类型:单次打卡,未完成显示“完成”
    • 打卡类型:计数,未完成显示“计数”,并且显示当前已打卡次数
    • 打卡类型:计时,未完成显示“计时”,并且显示当前已记录的打卡时间
    1. (已开发)新建/编辑任务

    显示内容:任务名称、奖励数、全勤奖励标识、周末奖励标识、任务描述,打卡类型,打卡配置(四种比较规则、两种数值类型)

    说明:目前有3种打卡类型,打卡配置根据打卡类型的不同而有所变化,从而形成丰富的打卡规则

    • 打卡类型:单次打卡、计数、计时
    • 打卡配置:
      • 单次打卡:这个不需要额外配置
      • 计数:需要设置比较规则和数值
      • 计时:需要设置比较规则和时间
    • 比较规则:大于、小于、大于等于、小于等于
    1. (已开发)删除任务

    2. (已开发)打卡

    3. (已开发,待自测)补打卡

    对于不同的打卡类型,都是默认直接完成打卡

    如果完全没有打过卡:按照当时的打卡规则,直接生成一条新的打卡记录和结算记录

    如果打过卡但是未完成的

    • 对于单次打卡:不存在这种情况
    • 对于计数打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位
    • 对于计时打卡:修改打卡记录的数据并记录修改值和对应的状态位,修改结算记录并记录修改值和对应的状态位
    1. (已开发,待自测)误打卡撤销

    有两种情况:

    1. 当天撤销

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

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

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

    2. (这种情况应该不存在,打卡当时应该就能即时处理不会留到结算后)结算后撤销,对于不同的打卡类型,都是默认直接没有打过卡

      删除对应记录,根据对应任务反向计算即可,并记录修改值和对应的状态位

    3. (已开发)归档

    4. (已开发)针对单一任务查询时间范围内的打卡信息

    显示内容:具体到天是否已打卡、打卡记录、打卡统计(打卡次数、全勤率)

    注意:这里在表增加一个状态值辅助判断

  • 奖励

    1. (已开发)查询当前用户拥有的奖励数

    显示内容:总奖励数、已领取奖励数、待领取奖励数

    1. (已开发,全部领取需要前端部分支持)领取奖励(部分领取、一次性全部领取)

    说明:全部领取功能通过前端页面支持,后端不需要额外开发

    1. (已开发)按时间范围查询当前用户的领取奖励记录
  • 刮刮乐

    1. (已开发)查询当前用户的投入刮刮乐信息

    显示内容:投入金额、中奖金额

    1. (已开发)追加投入金额记录/中奖记录

    2. (已开发)撤销投入金额记录/中奖记录

    3. (已开发)按时间范围的刮刮乐查询记录

    显示内容:投入金额记录、中奖记录

  • 结算

    1. (已完成,待自测)手动运维接口,可以指定具体结算日期
    2. (已完成)按时间范围查询当前用户的结算记录
  • 系统

    1. (已开发,待自测)每晚自动结算

字典

彩票来源

字典名称:彩票来源

字典编码:LOTTERY_SOURCE

字典项:

字典项编码 字典名称
WELFARE_LOTTERY 福利彩票
SPORTS_LOTTERY 体育彩票

彩票刮刮乐种类

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

字典编码:LOTTERY_SCRATCH_OFF_CATEGORY

字典项

字典项编码 字典名称
XINGYUN88 幸运88
CHAOGEILI 超给力

表设计

用户表

表名:user

字段 类型 描述
id bigint 主键
open_id varchar(128) 微信id
nickname varchar(100) 微信昵称
avatar varchar(1000) 微信头像url
total_reward_num int 总奖励数
unclaimed_reward_num int 未领取奖励数
claimed_reward_num int 已领取奖励数
lottery_invest_amount decimal(10,2) 彩票投入金额(元)
lottery_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-已删除)

打卡任务表

表名:punch_in

字段 类型 描述
id bigint 主键
task_name varchar(128) 任务名称
reward_num int 奖励倍数
category int 打卡类型(0-单次打卡,1-计数、2计时)
rule int 比较规则(0-大于等于,1-小于等于)
count_track int 次数记录
time_track time 时间记录
description varchar(300) 任务描述
weekend_double_flag tinyint 是否启用周末双倍标志(0-不是,1-是)
full_attendance_flag tinyint 是否启用全勤奖励标志(0-不是,1-是)
archive_flag tinyint 是否归档标志(0-不是,1-是)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务记录表

表名:punch_in_record

字段 类型 描述
id bigint 主键
punch_in_id bigint 打卡任务表主键
punch_in_date varchar(10) 打卡日期
count_track int 次数记录
time_track time 时间记录
settle_reward_num int 结算时任务上的奖励倍数
settle_category int 结算时任务上的打卡类型(0-单次打卡,1-计数、2计时)
settle_rule int 结算时任务上的比较规则(0-大于,1-大于等于,2-小于,3-小于等于)
settle_count_track int 结算时任务上的次数记录
settle_time_track time 结算时任务上的时间记录
punch_in_status int 打卡状态(0-进行中,1-完成,2-未完成) ,结算后修改状态,单次打卡除外
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务结算表

表名:punch_in_settlement

字段 类型 描述
id bigint 主键
user_id bigint 用户表主键
settle_reward_num int 结算奖励数
before_settle_reward_num int 结算前用户拥有的奖励数
after_settle_reward_num int 结算后用户拥有的奖励数
settlement_task_id bigint 结算任务表id
settlement_time timestamp 结算时间
notify_id bigint 通知表ID
notify_status varchar(20) 结算通知状态(fail-通知失败,success-成功通知,pending-待通知)
notify_time timestamp 结算通知时间
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

打卡任务记录与结算关联表

表名:punch_in_record_settlement_rela

字段 类型 描述
id bigint 主键
record_id bigint 打卡任务记录表ID
settlement_id bigint 打卡任务结算表ID
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

领取奖励记录表

表名:user_claim_reward_record

字段 类型 描述
id bigint 主键
claim_reward_num int 本次领取奖励数
claim_reward_time timestamp 领取奖励时间
before_claim_reward_num int 领取前用户拥有的奖励数
after_claim_reward_num int 领取后用户拥有的奖励数
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

奖励结算定时任务执行记录表

表名:settlement_task

字段 类型 描述
id bigint 主键
settle_date varchar(10) 结算日期
start_time timestamp 任务开始时间
end_time timestamp 任务结束时间
processed_num int 待处理结算数量
processed_settle_num int 处理已结算数量
processed_unsettle_num int 处理没结算数量
error_message text 失败异常信息
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

通知定时任务执行记录表(暂时无用)

表名:settlement_notify_task

字段 类型 描述
id bigint 主键
start_time timestamp 任务开始时间
end_time timestamp 任务结束时间
notify_num int 通知数量
notify_success_num int 通知成功数量
notify_fail_num int 通知失败数量
error_message text 失败异常信息
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

彩票刮刮乐记录

表名:lottery_scratch_record

字段 类型 描述
id bigint 主键
action_type int 动作类型(0-投入/购买,1-中奖,2-撤销投入,3-撤销中奖)
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 int 状态(1-启用,0-失效)
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 字典表主键
item_code varchar(100) 字典项编码
item_name varchar(100) 字典项名称
description varchar(200) 描述
status int 状态(1-启用,0-失效)
created_by bigint 创建人
creation_time timestamp 创建时间
last_updated_by bigint 最后更信人
last_update_time timestamp 最后更新时间
version bigint 版本号
delete_flag tinyint 逻辑删除标志(0-未删除,1-已删除)

开发参考