需求分析

1、用户当天登录商城,只要签到就直接奖励一定的积分或者根据用户本周或者本月内已经连续签到的天数进行积分奖励,后台可以设置具体的奖励规则,这里假设本周内连续登录三天奖励 1 积分,五天奖励 2 积分,七天奖励 3 积分,每周一签到次数归零(归零方法不一定是每周一签到次数自动设为零,详见下文)

2、实现形式:在个人中心放置签到按钮或者登录成功之后进行弹窗提示

3、个人中心,用户可以看到签到日志(如果设置日志记录的话)和积分流水

4、商城后台可以对签到送积分的规则进行设置,也可以看到签到日子和积分流水,具体规则包括:1、奖励模式 2、相应模式配置 3、日志记录 4、是否开启等,具体详见签到配置表

签到配置列表,这些配置信息可以格式化以后作为商城的一项配置type

签到模式(当天签到就有奖励(1)、连续签到一定天数会有不同奖励(2))

configs

type为1时,表示每天签到奖励积分数;type为2时,表示连续签到天数以及奖励阶梯(可以作为数组元素并存)

open_log

是否记录签到日志

save_days

签到日志保存天数

is_open

是否开启签到机制

数据库设计相关

1、商城用户表添加下面两个字段

last_signin_time 保存用户上一次签到时间

cont_days 保存用户连续签到天数

2、商城配置表添加一下字段

signin_configs 保存商城签到功能配置信息(json格式化或者序列化都可以)

3、签到日志表

表名:pre_signin_log

功能:用于保存用户签到日志记录

字段

数据类型

属性

约束条件

说明

id

int(10)

无符号、非空、自增

主键

主键id

user_id

int(10)

无符号、非空、默认0

外键、普通索引(signin_user_id)

用户id

integral_num

int(5)

无符号、非空、默认0

签到奖励积分

add_time

int(11)

无符号、非空、默认0

签到时间

设计思路分析(用户签到操作时处理)

1、当天签到就送积分的简单模式(无需多言)

2、根据用户连续签到天数进行积分奖励的复杂模式

连续性判断:这个简单,判断昨天有没有签到就行

连续签到次数判断:根据连续性判断结果,再判断当天是不是周一,确定或者重置本周当前连续签到次数

奖励积分数实现:确定了连续签到次数,就可以根据商城签到配置信息确定当天签到后该奖励的积分数量并进行日志记录和积分流水记录操作

php 示例代码(ecshop实现)

/**

* 代码中以文章开头的假设为思路,具体根据商城配置做修改*/

functionuserSignin(){if (!$_SESSION['user_id'])

{return false;

}$time = getdate();$today_zero = mktime(0, 0, 0, $time['mon'], $time['mday'], $time['year']);$sql = "select last_signin_time from ".$GLOBALS['ecs']->table('users')." where user_id = '$_SESSION[user_id]'";$last_signin_time = $GLOBALS['db']->getOne($sql);if($today_zero < $last_signin_time && $last_signin_time < ($today_zero + 24*60*60)){//今日已经签到过了

array('error'=>true, 'msg'=>'你今日已经签过到咯');

}else{//签到处理

if($time['wday'] == 1){//如果是周一,签到从零算起

$sql = "update ".$GLOBALS['ecs']->table('users')." set cont_days = 1, last_signin_time = ".time()." where user_id = '$_SESSION[user_id]'";$GLOBALS['db']->query($sql);return array('error'=>false, 'msg'=>'签到成功');

}else{//如果不是周一得判断有没有连续签到,具体方法是判断昨天有没有签到,如果签到了,连续签到次数加一,如果没有签到,连续次数归一

if(($today_zero - 24 * 60 *60) < $last_signin_time && $last_signin_time < $today_zero){//昨天已经签过到,连续签到天数加一

$sql = "update ".$GLOBALS['ecs']->table('users')." set cont_days = cont_days + 1, last_signin_time = ".time()." where user_id = '$_SESSION[user_id]'";$GLOBALS['db']->query($sql);$cont_days = $GLOBALS['db']->getOne("select cont_days from ".$GLOBALS['ecs']->table('users')." where user_id = '$_SESSION[user_id]'");//根据文章开头的假设确定奖励积分数量

switch ($cont_days) {case 3:

$add_integrals = 1;break;case 5:

$add_integrals = 2;break;case 7:

$add_integrals = 3;break;default:

break;

}//code...  // 签到日志记录操作和积分账户处理操作代码省略……

if($add_integrals){return array('error'=>false, 'msg'=>'你已经连续签到 '.$cont_days.' 天,获得奖励 '.$add_integrals.' 积分');

}else{return array('error'=>false, 'msg'=>'签到成功');

}

}else{//昨天没有签到,连续签到天数归一

$sql = "update ".$GLOBALS['ecs']->table('users')." set cont_days = 1, last_signin_time = ".time()." where user_id = '$_SESSION[user_id]'";$GLOBALS['db']->query($sql);return array('error'=>false, 'msg'=>'签到成功');

}

}

}

}$signinRes =userSignin();var_dump($signinRes);  //打印签到结果

签到mysql设计_商城签到功能的设计与实现相关推荐

  1. mysql 用户签到表设计_用户签到表的设计思路与数据库实现

    签到做为,一个促进用户粘性的手段已经很成熟了. 这里说下,个人的一些设计表思路 添加用户配置表.主键关联User表,即可. CREATE TABLE `cft_user_signin` ( `id` ...

  2. 学生宿舍管理mysql设计_学生宿舍管理系统的设计与实现(PHP,MySQL)(含录像)

    学生宿舍管理系统的设计与实现(,MySQL)(含录像)(论文10000字,程序代码,MySQL数据库) 结合学校宿舍实际情况开发一款基于Web的高校宿舍管理系统,主要适用于宿舍管理员,学生两类人员的使 ...

  3. python 京东签到在哪里_京东签到在哪里?有哪些步骤呢?

    京东签到在哪里?有哪些步骤呢?最近很多朋友都在咨询小编京东签到在哪里,其实这个问题很简单,但是为了能够使更多的亲们了解京东签到在哪里,小编专门整理了这篇文章,希望阅读过后的亲们可以明确京东签到这个问题 ...

  4. mysql关于菜单权限的设计_管理系统之权限的设计和实现

    本文主要想对前端权限管理功能实现做一个分享,所以并不会对后台管理的框架结构做太详细介绍,如果有朋友对其他有兴趣可以留言. 基本设计和分析 前端 vue + elementui 服务端: node + ...

  5. 职工考勤管理MySQL课程设计_考勤管理系统数据库课程设计.doc

    课 程 设 计 课程名称 数据库系统概论_____ 题目名称 考勤管理系统 学生学院 计算机学院 专业班级 学 号 学生姓名 ________ 指导教师 左亚尧 2012年 1月 16日 一.需求分析 ...

  6. 网上订餐系统 mysql 数据库设计_网上订餐系统的设计与实现

    摘要: 进入21世纪,伴随着我国的综合国力的迅速提升,科技的迅猛发展,网络信息化和电子商务已经渗透到了人类社会的各个方面与角落.网购再也不是新鲜的代名词,它已经成为我们寻常生活的一部分.人们在网上购买 ...

  7. eda多功能数字钟课程设计_《多功能数字钟》EDA实验报告

    <EDA课程设计> 1.摘要 实验报告 多功能数字钟 姓 名: 学 号: 联系方式: 成 绩: 在当代,随着人类社会进入到高度发达的信息化社会.信息技术的发展起着越来越大的作用,它几乎涉及 ...

  8. 时间轴ui设计_我应该在UI设计上花更多时间吗?

    时间轴ui设计 Let's start with an example of communication skills: they are important for any profession, ...

  9. web登录界面设计_出色的Web界面设计的7条规则

    web登录界面设计 When you work on a website or on the design of web pages, remember that their success is n ...

最新文章

  1. 创新是低情商的人做的
  2. 企业网络推广——企业网络推广更注重网站内部链接优化!
  3. 牛客 - 数位操作2(数位dp)
  4. centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误
  5. 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
  6. Ubuntu(Debian)apt-get
  7. 模式识别经典算法——Kmeans图像聚类分割(以最短的matlab程序实现)
  8. Android 启动过程介绍【转】
  9. Protel入门教程
  10. Jupyter Notebook设置密码且遇到提示:ImportError: DLL load failed while importing _ssl
  11. Java 6.22练习-----模拟物流快递系统程序设计
  12. SLAM之回环检测与优化
  13. VisualVM的配置和使用
  14. DNS域名解析自制笔记
  15. 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件
  16. 按字母顺序进行排序,不区分大小写
  17. firefox的一些插件~
  18. 平衡二叉排序树--调整方法快速记忆方法(渣男丢妻弃子法)
  19. Freeswitch一些高级功能-配置中文语音提示等
  20. matlab求条件概率密度_Matlab对量子力学中的一维无限深势阱的模拟计算

热门文章

  1. 产品设计,应不应该追求高保真?
  2. 《​国家地理杂志》720P 高清全集 468GB 英语中字 BT下载
  3. 2021年新高考八省联考湖南成绩查询,八省联考湖南还没公布成绩?新高考模拟志愿填报,你准备好了吗?...
  4. Android 通知栏 计时,倒计时状态栏Countdown
  5. plc和单片机及c语言区别,PLC和单片机有什么区别?如何分清PLC和单片机
  6. Win系统 - 罗技 G604 鼠标蓝灯闪烁、失灵解决方案
  7. LinuxDNS协议一、基础知识
  8. 《重说中国近代史》—张鸣—两个世界的第一次碰撞
  9. 最新SQL Server2008讲座下载(英文)
  10. 2020年金融科技专利报告