PHP实现用户浏览记录接口
@toc
一、如图
- 如下图,按照天展示浏览记录。每个方框代表一个商品,包括:
商品标题
、商品图片
、商品价格
等
二、已知
※
数据表字段
id
浏览记录IDuser_id
用户IDgoods_id
商品IDtitle
商品标题picture
商品图片sale_price
商品价格create_time
创建时间update_time
更新时间
三、思路
※ 我们把一天的数据认为是1条数据
- 通过
mysql
函数FROM_UNIXTIME()
把时间戳转换为日期,别名为date
- 按照
date
分组,create_time
降序,获取用户有浏览记录的日期
array_slice()
函数模拟Mysql分页数据$visitDays
- 把
$onePageData
的最后一条数据加上00:00:00
,$data
的第一条数据加上23:59:59
- 把日期转为时间戳,在Mysql中
between
查询 - 把得到的数据通过
date('Y-m-d')
作为键
,存入数组
四、代码
- 代码仅供参考,因为没有引入
Mysql
相关组件,所以是跑不起来的,这里只是提供一个思路
//用户浏览记录
public function lists($param, $pager)
{$visitDao = new VisitDao();// $loginUser = UserService::loginUser();
// $param['user_id'] = $loginUser['id'];$param['user_id'] = 1; //这里根据实际情况获取$groupField = 'date'; //分组字段$fields = ['id', "FROM_UNIXTIME(create_time, '%Y-%m-%d') as date", 'create_time'];# 按照查询条件$param;FROM_UNIXTIME处理数据,并按date分组;按create_time降序数据(最新的数据在最上面)$list = $visitDao->selectAllGroup($param, $fields, $groupField, ['create_time', "desc"]); //分组降序查找数据if (!$list) {return ['count' => 0, 'data' => []];}$visitDays = array_column($list, 'date'); //获取有浏览记录的日期$count = count($visitDays); //浏览的天数(总记录数)self::getDayParam($visitDays, $pager['page'], $pager['size'], $param);$data = [];$allData = $visitDao->selectAll($param); //查询所有foreach ($allData as $value) { //把数据按天划分$day = date('Y-m-d', $value['create_time']);$data[$day][] = $value;}return ['count' => $count, 'data' => $data];
}//获取一页数据里日期的查询条件
public function getDayParam($visitDays, $page, $size, &$param)
{//array_slice函数模拟分页数据:把1天视为1条数据$startRow = ($page - 1) * $size;$onePageData = array_slice($visitDays, $startRow, $size);//※注意:因为是降序,所以是大于等于最后一条数据,小于等于第一条数据,并拼接上时分秒$startDay = $onePageData[count($onePageData) - 1] . " 00:00:00";$endDay = $onePageData[0] . " 23:59:59";//组装查询语句:创建时间大于等于$startDay,并且小于等于$endDay$param['create_time'] = ['between' => [strtotime($startDay), strtotime($endDay)]];
}public function test() {$day = ['2102-01-04' ,'2102-01-03','2102-01-02','2102-01-01'];self::getDayParam($day, 1, 2, $param);var_export($param);die;//打印:array ( 'create_time' => array ( 'between' => array ( 0 => 4165660800, 1 => 4165833599, ), ), )
}
五、结果数据
{"code": 0,"message": "success","data": {"count": 1,"data": {"2021-03-15": [{"id": 2,"goods_id": 17,"user_id": 1,"title": "test1 goods","picture": "xxxxxxxxxxxxxx","sale_price": "1.00","create_time": 1615796616,"update_time": 1615796616,},{"id": 3"goods_id": 18,"user_id": 1,"title": "test2 goods","picture": "xxxxxxxxxxxxxx","sale_price": "2.00","create_time": 1615796611,"update_time": 1615796611,}]}}
}
PHP实现用户浏览记录接口相关推荐
- Django 处理用户浏览记录
当用户点击某一个产品时就会有一个产品浏览记录,记录存进session 里,因为浏览记录是多条,所以session存的应该是个列表 # 判断是否登录,在登录状态下操作 if user:# 先取sessi ...
- Cookie实现记录用户浏览记录
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...
- cookie知识,小应用:记住用户名;记录用户浏览记录
2019独角兽企业重金招聘Python工程师标准>>> cookie 技术: cookie属性: name: 名称 value:取值 path:路径(可选) maxAge :生命周期 ...
- 电商系统中用户的浏览记录功能是如何实现的
知识点:Django框架.redis数据库 1.业务需求分析 当登录用户在浏览商品的详情页时,我们可以把详情页这件商品信息存储起来,作为该登录用户的浏览记录:用户未登录,我们不记录其商品的浏览记录. ...
- 使用cookie保存用户的浏览记录
我们在写关于用户对商品额的浏览记录的时候一般使用cookie进行记录,cookie一般保存字符串比较常用,如果想保存对象可以使用序列化,这里不做过多的解释,我们现在只做简单的cookie应用,cook ...
- 小心!WPS正在监控你的电脑!浏览记录
WPS是国产很好的免费办公软件,金山旗下,因为微软office是收费的,安装也不如wps简单,wps在国内用户量很大,我也好多年一直用wps. 但是最近很长时间用wps的用户应该大都会发现,电脑右底部 ...
- 微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享
微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享 项目需求 1.后台统计一个用户在我们小程序的每个页面的停留时间 2,前台用户可以在个人中心看到自己的分享记录以及多少人查看 需求分析 需求一 ...
- 用户身份和浏览记录一览无遗,Safari最新版本被曝高危漏洞
在苹果官网上,Safari浏览器一直以强大的隐私保护功能作为卖点.其中,智能防跟踪和隐私标签等功能满足用户需求.但在近日,浏览器指纹识别服务商FingerprintJS发布了一篇博客,经他们调查发现, ...
- 327、淘宝用户浏览轨迹【逛淘宝记录】的查询设计
问题:淘宝用户浏览轨迹[逛淘宝记录]的查询设计,用MySQL存储后分库分表,怎么实现用户自己去查询个人的浏览记录. 我回答按用户id分,面试官说有问题让我再想想,我想不出来.大佬们看看用户id分会有什 ...
- 使用redis存储用户的浏览记录
用户历史浏览记录:1).什么时候添加历史浏览记录:访问商品的详情页面的时候,添加历史浏览记录2).什么时候获取历史浏览记录:访问用户中心个人信息页的时候获取历史浏览记录3).历史浏览记录需要存储在哪里 ...
最新文章
- Python3中collections.OrderedDict介绍
- Android中实现整个视图切换的左右滑动效果
- Android中Video的三种播放方式的实现
- Discuz!NT 在线用户功能简介
- Web---JSP-EL表达式
- 机器学习 数据增加_【机器学习】数据降维概述
- 产品原型示例_原型设计模式示例
- hdu 5802——Windows 10
- 开发日志_Jan.8.2017
- LeetCode 158. 用 Read4 读取 N 个字符 II
- layui select动态赋值_layui与 VUE 配合使用时动态渲染 select 坑
- libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
- 【开源】前端拖拽表单设计器 自定义表单
- getParameterValues中文乱码
- 数字转人民币大写,PHP实现
- ceph分布式存储-常见 PG 故障处理
- 风林评《如何写影评》|如何写影评
- 搜狗输入法 - 自定义短语
- java解析宏文件,从命令行或批处理文件运行Excel宏的方法?
- Windows10隐藏3D对象、文档、音乐、图片、视频、下载、桌面7个文件夹
热门文章
- 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)
- tensorflow手动实现算法之二多元线性回归
- Ensemble Learning方法总结
- java 封闭类型_java – 如何获取封闭类?
- 线性表插入元素算法(顺序存储)
- vs2013 .net连接mysql_Visual Studio C#.NET 轻松连接Mysql数据库之组件mysql-connector-net-网络教程与技术
-亦是美网络...
- java 图片旋转裁剪_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...
- 计算机不显示用户组密码设置,手把手教你设置win10系统开机时跳过锁屏画面直接显示密码框登录界面-系统操作与应用
-亦是美网络...
- 世界第一台电脑_研发世界第一台电脑的核心人物,被美国隐瞒35年,只因他是个华人...
- ペイペイ mini program_小姐姐最爱的MINI,你了解吗?