首页
学习
活动
专区
圈层
工具
发布

累计连续签到设计和实现

作者:hdfg159 链接:https://www.jianshu.com/p/bacd924df502 累计连续签到设计和实现 最近公司业务上需要实现一个累计连续打卡的功能,现在把打卡设计问题和思路整理一下发给大家...目前搜集到一些基于 Redis 位图 / 关系型数据库的一些方案,可以参考一下,做出最优方案的选择 玩转Redis-京东签到领京豆如何实现 基于Redis位图实现用户签到功能 如何利用 Redis 快速实现签到统计功能...由于需求的复杂,本文还是选择使用关系型数据库实现和存储,因为关系型数据库查询无所不能,哈哈哈哈 功能要求 签到 补签 统计某用户截至今天连续打卡天数 统计某用户在某一天打卡排名 统计某用户截至到某天连续打卡天数...最高连续签到记录 下面直接上一个需求图 ?...问题难点 怎么用比较好方式去统计连续打卡天数 怎么实现补卡功能以达到连续签到的效果 怎么实现补签后连续天数的统计功能 数据库设计 以下是打卡记录表的设计和实现,我已经去掉了一些业务字段,剩下都是表结构的核心字段

3.8K30

ThinkPHP连续签到小案例

小伙伴们平时做网站开发的时候,是不是也遇到过会员连续签到送积分,比如我有一个加积分的规则是针对连续签到的,那么我们在实现这个功能的时候,我们面对的有一下几点注意: (1)连续签到,次数要累加,这就涉及到两个时间戳之间的判断...(2)是否是本月的的签到,当然这点话,两个时间戳判断也就解决了,但是也要注意这个地方 (3)连续就加1,反之就清0,还有就是之前没签到就生成一条签到的记录!...下面我就贴出一段签到的实现代码,欢迎大家一起进步学习! 表结构 ?.../**连续签到的实现方式*/ public function signList(){ /**先查到是否有这个用户*/ $m_id = $_GET['m_id...da['time'] = time(); $da['count'] = $sign['count']+1; /**这里还可以加一些判断连续签到几天然后加积分等等的操作

1.4K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CSDN是怎么实现用户签到,统计签到次数,连续签到天数等功能微服务的

    文章目录 需求分析 设计思路 用户签到和统计连续签到的次数 签到控制层 SignController 签到业务逻辑层 SignService 测试 按月统计用户签到的次数 签到控制层 SignController...设计思路 最简单的设计思路就是利用关系型数据库保存签到数据(t_user_sign),如下: 字段名 描述 id 数据表主键(AUTO_INCREMENT) fk_user_id 用户ID sign_date...签到日期(如2022-12-19) amount 连续签到天数(如19) 用户签到:往此表插入一条数据,并更新连续签到天数; 查询根据签到日期查询 统计根据 amount 统计 如果这样存数据的话,...与传统数据库存储空间对比: 例如 user:sign:98:202212 表示用户 id=98 的用户在2022年12月的签到记录。...用户签到和统计连续签到的次数 用户签到,默认是当天,但可以通过传入日期补签,返回用户连续签到次数(后续如果有积分规则,就会返回用户此次签到积分) 签到控制层 SignController /**

    3.7K20

    签到系统该怎么设计

    背景相信签到系统大家都有接触过,更多的是使用。但是有思考过这种系统是怎么设计的吗?比方说我统计一下每个月中每天的签到情况,怎么设计呢?今天一篇文章告诉你。...首先,我们熟悉的思维是:我设计一个数据表,实现签到的统计。这样设计确实是可以的,但是我们仅仅作为统计的话,这样的设计就显得有点冗余了,那还有更简单的方式吗?...示例:BITOP AND destbitmap bitmap1 bitmap2Redis 的 Bitmap 可以进行高效的位操作,所以一些常见的设计场景都可用到。...今天的设计也选取了第三种场景。测试我们先在redis-cli中测试一下。图片我操作的是第0天,我到了,第2、5天没有到,所以总共到了1天。对应的代码设计其实和在命令行中的操作差不多,这里就不再展示了。

    68540

    百度大数据面试SQL-连续签到领金币

    本题较难,建议收藏后阅读 一、题目 有用户签到记录表,t_coin_signin,记录用户当天是否完成签到,请计算出每个用户的每个月获得的金币数量; 签到领金币规则如下: 用户签到获得1金币; 如果用户连续签到...3天则第三天获得2金币,如果用户连续签到7天则第7天获得5金币; 连续签到7天后连续天数重置,每月签到天数重置; 样例数据 +----------+--------------+----------+...; 先解决连续问题,然后计算出每天是连续签到第几天; 处理7天重置问题,得到参与活动的实际连续第几天签到; 计算每天得到的金币数量,然后求和得到每月获得的金币总数; 维度 评分 题目难度 ⭐️⭐️⭐️⭐️...⭐ 题目清晰度 ⭐️⭐️⭐️⭐️⭐ 业务常见度 ⭐️⭐️⭐️⭐️ 三、SQL 1.根据用户是否签到,判断用户是否连续签到 本题每个用户的日期记录是连续的,给出了当天用户是否签到。...,是第几天连续 先计算出用户当月实际是第几天连续签到,增加限制用户签到状态。

    44210

    现有1亿个用户10天的签到情况,你能统计出这10天连续签到的用户总数吗?

    在 Web 和移动应用的业务场景中,我们经常需要保存这样一种信息:统计用户在手机 App 上的签到打卡信息。 在签到打卡的场景中,我们只用记录签到(1)或未签到(0),它就是非常典型的二值状态。...在签到统计时,每个用户一天的签到用 1 个 bit 位就能表示,一个月(假设是 31 天)的签到情况用 31 个 bit 位就可以,而一年的签到也只需要用 365 个 bit 位。...BITOP命令示意图 回到我们的标题:如果记录了 1 亿个用户 10 天的签到情况,你有办法统计出这 10 天连续签到的用户总数吗?...在统计 1 亿个用户连续 10 天的签到情况时,你可以把每天的日期作为 key,每个 key 对应一个 1 亿位的 Bitmap,每一个 bit 对应一个用户当天的签到情况。...最后,我们可以用 BITCOUNT 统计下 Bitmap 中的 1 的个数,这就是连续签到 10 天的用户总数了。 现在,我们可以计算一下记录了 10 天签到情况后的内存开销。

    1.1K10

    业务微信签到小程序的设计实现方案

    -CoderOilStation业务微信签到小程序的设计实现方案使用微信签到的方式是一种新的尝试。企业微信设计的业务范围起始于互联网公司。飞书设计的实现更加严格。很多工厂开始使用钉钉打卡的方式。...微信签到的方式是政府和高校的外围业务。签到统计员工的工时。签到的设计需要记录用户的签到时间地点人物和具体的工作业务。微信扫码签到开始设计开发。签到功能需要集成到微信小程序的功能模块上面。...使用手机的微信扫码签到打卡记录用户的手机唯一物理标识和具体工作地址工作内容。可移动嵌入式设备的流行得益于轻型操作系统Linux的发布运行推广。Linux操作系统的体积和可以安装的应用程序并不是很多。...用户达到方案设计的要求之后逐步推广应用程序的安装和部署。小程序设计和实现是移动应用程序的缩减版本映像。基于微信平台的业务程序的开发遵守微信平台的程序发布标准。使用PC笔记本签到打卡的方式并不推荐。...用户支付模块和业务签到日志设计大量的数据记录分析操作。数据导入导出的应用批量数据输入输出。硬件厂商感兴趣企业互联网产品的应用和升级推广。

    57210

    毕业设计!Python实现学生教师刷脸签到系统

    大家好,我是小二,今天分享一个 Python 毕业设计项目:学生教师刷脸签到系统。...简介 利用Python语言、Flask框架、Dlib库、MySQL数据库等工具设计并实现一套基于Web端的刷脸签到系统。...学生可以在闲暇时在系统录入人脸,等到上课签到时,只需在网页上刷脸即可完成签到,签到页实时显示签到人信息,整个过程简便流畅。同时,也实现了与考勤相关的一系列功能,满足用户需求。...实现工具 语言:Python 工具库:Dlib OpenCV 框架:Flask Bootstrap 数据库:MySQL 数据库设计 共设计了六张表: attendance:学生的考勤情况 course:...登陆时间提醒 修改密码 拦截器 总结 本项目主要采用了Python语言基于Flask框架开发,利用Dlib库中68特征点检测器和深度残差网络模型,欧氏距离,目标跟踪方法实现了人脸识别,采用MySQL数据库记录系统相关数据

    1.2K20

    基于SpringBoot的5种签到打卡设计思路及实现方案

    今天我们就以保险理赔相关的签到场景为例,聊聊5种不同的签到打卡设计方案。方案一:简单日期签到适用场景用户每日签到获取积分,连续签到有额外奖励。...booleanisContinuous=checkContinuity(userId,date);if(isContinuous){return10;//连续签到奖励}else{return5;//普通签到奖励...}}}方案二:连续签到统计适用场景鼓励用户长期坚持签到,连续签到天数越多奖励越丰厚。...实现思路维护连续签到天数统计,处理中断重置逻辑。...:理赔进度确认:使用任务签到,理赔员完成查勘后打卡确认理赔时效监控:使用连续签到,监控理赔处理时效理赔地点验证:使用位置签到,验证理赔员是否到达现场理赔培训签到:使用活动签到,培训会议的现场签到理赔奖励机制

    62610

    MySQL基础面试题

    面试题目 实现一个会员签到积分统计功能,第一天签到增加1个积分,第二天签到增加1个积分,第三天签到增加2个积分,第四天签到增加3个积分,第五天增加5个积分。每天只能签一到,中间断签,则重新计算。...面试难点 1.找到其中增加积分的规律 2.数据库设计 数据库设计 START TRANSACTION; -- 创建用户表 CREATE TABLE `account` ( `id` int(1)...NULL COMMENT '用户id', `point` int(4) NOT NULL COMMENT '总积分', `signday` int(4) NOT NULL COMMENT '连续签到天数...php // 通过分析上面的规律,我们可以看得出,当连续第三天的时候就是前面两天签到的分数相加 // 1.创建数据库连接 $mysqli = new mysqli('127.0.0.1','root',...; die(); }else{ // 2.如果有数据,则表示用户不是第一次登陆,则进行登录的天数做验证 // 查询用户连续登录的天数 $daySql

    84420

    让你设计实现一个签到功能,到底用MySQL还是Redis?

    移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面我们从技术方面看看常用的实现手段: 一. 方案1 直接存到数据库MySQL 用户表如下: ?...last_checkin_time 上次签到时间 checkin_count 连续签到次数 记录每个用户签到信息 签到流程 1.用户第一次签到 last_checkin_time = time()checkin_count...= time()checkin_count=1 具体逻辑代码就不贴了,因为太简单了,就是数据库得增删改查。...userid)){ //已签到 }else{ //签到 redisService.setbit(key, uid, 1); } 以下是用户连续签到计算 public...int getUserCheckinCount(String uid){ String key = "checkin_" + uid; // 查询昨日签到是否连续进行逻辑计算 } 以下是计算一天签到用户数

    2.5K20

    实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?

    : 用户在每次启动时查询签到记录(规则:连续7日签到从0开始,签到过程中有断签从0开始) 如果今日未签到则提示用户可以进行签到 用户签到获取相应的奖励 提到签到,脑海中首先浮现特点: 需要记录每位用户每天的签到情况...查询时根据规则进行签到记录情况 需求&流程设计&技术实现方案 1.需求原型图 ?...4.技术实现方案 SpringBoot MySQL 数据库表结构 1.签到记录最新表 CREATE TABLE `zh_sign_in` ( `id` bigint...查看数据库结果 ? 模拟用户查询签到记录 进行请求 ?...总结 亮点:实现业务连续签到,断签以及奖励的业务 注意点:基于数据库查询做的,在进行签到接口需要用redis锁防止并发操作 后续会持续分享更多业务中的亮点 ---- 每天进步一点点 慢一点才能更快 <END

    2.1K20

    数据库设计

    数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。...在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。 数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。...一、范式概述 1.1、什么是范式 好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化数据的设计和存储,这些规则就称为范式。...1.2、范式分类 目前关系数据库有六种范式: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF)、 第四范式(4NF) 第五范式(5NF,又称完美范式) 一般说来,数据库只需满足第三范式...上面的设计不满足第三范式,但是高考分数表就是这样设计的,为什么? 高考分数峰值访问量非常大,这时候就是性能更重要。当性能和规范化冲突的时候,我们首选性能。这就是“反三范式”。

    1K10

    数据库设计

    一、数据库系统的设计任务 1、生命周期的两个重要阶段 ۩设计阶段 1)信息需要:表示一个组织部门需要的数据及其结构。...۩以DBMS为基础的应用程序设计 二、数据库系统设计的特点 ۩反复性:需要反复推敲和修改才能完善数据库设计。...۩试探性:数据库系统设计的结果经常不是唯一的,所以设计的过程通常是一个试探的过程。...由于在设计过程中,有各种各样的需求和制约的因素,它们之间又是可能会相互矛盾,因此数据库系统的设计结果很难达到非常满意的效果,由数据库设计者权衡本组织部门的需求来决定哪些方面优化哪些方面性能降低点。...۩分步进行:由不同人员分阶段地进行,这样使整个数据库系统地设计变得条理清晰,目的明确,又是技术上的分工。 ? 三、数据库系统设计地步骤 ۩分析与设计阶段 1)需求分析:数据库的特点(数据是什么?

    1.4K30

    数据库设计

    实体关系(Entity-Relationship, E-R)概念 E-R 模型是一种描述数据库的抽象方法 实体关系建模的方法更多依赖于直觉而非机器, 但会导致相同的设计 E-R 模型 实体 (Entity...每个函数依赖左边的属性在老的核心的表中都出现, 并决定了所有新表中的其他属性 数据库模式 (Database Schema) 一个数据库的模式是数据库所有表的标题的集合, 以及设计者希望在表的连接上成立的所有的函数依赖的集合...举例子: 假定 ABC 有函数依赖 B->C, 则下表是合法的 image.png 像下面那样插入是非法的, 因为破坏了 B->C image.png 范式 (Normal Form, NF) 设计关系数据库时..., 遵从不同的规范要求, 设计出合理的关系型数据库, 这些规范被称为范式 目的: 使结构更合理 消除存储异常 减小数据冗余 便于增,删,更新 保持依赖性 (FD Preserved) 前置条件: 通用表..., 每一列都不可再分割, 即某一属性不能有多个值 不符合 1NF 的例子: id 姓名 年级 签到 时间 次数 连续次数 符合 1NF 的例子: id 姓名 系名

    3.8K20

    数据库设计

    项目二:数据库设计 一,为什么需要设计数据库 良好的数据库设计 1.节省数据的存储空间 2.能够保证数据的完整性 3.方便进行数据库应用系统的开发 糟糕的数据库设计 1.数据冗余、存储空间浪费 2.内存空间浪费...数据完整性 数据完整性:指数据的准确性 存在不正确、不准确的数据,数据库“失去了完整性”。 三,概念 数据(Data)是描述事物的符号记录。 模型(Model)是现实世界的抽象。...四,数据库的设计步骤 概念模型:把现实世界转换为信息世界的模型,E-R模型 实施模型:把信息世界转化为数据世界使用的模型,关系模型 五,模型 层次模型 网状模型 关系模型 此为二维表格 关系模型的特点...E-R图设计步骤 对于复杂的系统,E-R图设计通常都应经过以下两个阶段: (1)针对每一用户画出该用户信息的局部E—R图,确定该用户视图的实体、属性和联系。...概念结构设计 概念结构设计- E-R图方法 实体关系图:简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。

    91220

    数据库设计概念结构设计_数据库设计典型实例

    文章目录 数据库设计 概念设计结构 概念结构设计 ER模型的基本元素 实体/实体集 属性 区别实体和属性 联系 二元联系的关系 1:1 1:n m:n 一元联系 1:1 1:n m:n...三元联系 采用ER模型的概念设计 设计局部ER模型 例题 设计全局ER模型 全局ER模型的优化 数据库设计 数据库设计:构造最优的数据模型,建立数据库及其应用系统的过程 数据库设计的好坏非常重要...概念设计结构 概念设计的目标是产生反映用户需求的数据库概念结构,即概念模型 概念模型具有硬件独立、软件独立的特点 处于一个桥梁作用 概念设计的主要步骤 概念设计的方法 实体练习方法...(ER方法) 概念结构设计 ER模型的基本元素 实体/实体集 实体 实体是指数据对象,指应用中可以区别的客观存在的事物。...采用ER模型进行数据库的概念设计的步骤 首先设计局部ER模型 然后把各局部ER模型综合成一个全局ER模型 最后对全局ER模型进行优化,得到最终的ER模型,即概念模式 设计局部ER模型 要点是区分实体和属性

    1.7K20

    数据库设计

    杨鑫奇数据库设计经验之谈 一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所 组成,数据库设计的好坏是一个关键...如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋, 大学学位课程里也有专门的讲述。...所以我归纳历年来所走的弯路及体会,并在网上找了些对数据 库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。...第 1 部分 - 设计数据库之前 考察现有环境 在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。...测试需要在把新数据库投入实际服务之前完成。 检查设计 在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。

    1.6K80
    领券