需求分析

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. XML编辑器之XMLSpy2005
  3. Elasticsearch forceMerge操作
  4. linux读取.data文件,[20121227]v$datafile访问是从数据文件获取信息吗.txt
  5. C/C++语言函数学习(3)STL中map容器
  6. 基于TCP/UDP的socket编程
  7. 暴走P图APP隐私政策
  8. 2022年《社区护理学》 试题及答案
  9. uni-app背景图片的设置
  10. mysql可以存储.wav文件吗_手机迅雷下载的视频文件存储路径位置、iPad可以下载迅雷...
  11. LintCode 138.子数组之和
  12. 学习笔记(2):A110测试-测试课程申请22
  13. 【微观】需求、供给和均衡价格
  14. 搜狐邮箱的Python经验
  15. jupyter kernel
  16. STM32寄存器的简介、地址查找,与直接操作寄存器
  17. 多项式拟合一般方程法详细推导
  18. linux里用于剪切文件,Linux_拷贝,剪切,删除和创建文件
  19. 大智慧经典版|大智慧经典版下载
  20. 最垃圾的系统之一:广东省自学考试管理系统

热门文章

  1. wps数据透视图如何显示所有数据标签
  2. 什么是图灵机和通用计算机,从图灵机到冯诺依曼体系结构让你知道什么才是计算机?...
  3. RMAN备份数据库_备份RMAN备份(Backing Up RMAN Backups)
  4. 《中国人工智能学会通讯》——1.28 智能助手背后的技术
  5. 大疆无人机安卓Mobile Sdk开发
  6. 计算机取证最佳实践指南
  7. 《国产操作系统之银河麒麟》银河麒麟服务器操作系统安装
  8. 按图片搜索淘宝商品(拍立淘)API接口
  9. 致远OA ,限制附件上传格式或附件相关操作的方法(非正规操作,谨慎使用)
  10. IDEA plugins插件仓库不显示