@toc

一、如图

  • 如下图,按照天展示浏览记录。每个方框代表一个商品,包括:商品标题商品图片商品价格

二、已知

数据表字段

  • id 浏览记录ID
  • user_id 用户ID
  • goods_id 商品ID
  • title 商品标题
  • 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实现用户浏览记录接口相关推荐

  1. Django 处理用户浏览记录

    当用户点击某一个产品时就会有一个产品浏览记录,记录存进session 里,因为浏览记录是多条,所以session存的应该是个列表 # 判断是否登录,在登录状态下操作 if user:# 先取sessi ...

  2. Cookie实现记录用户浏览记录

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  3. cookie知识,小应用:记住用户名;记录用户浏览记录

    2019独角兽企业重金招聘Python工程师标准>>> cookie 技术: cookie属性: name: 名称 value:取值 path:路径(可选) maxAge :生命周期 ...

  4. 电商系统中用户的浏览记录功能是如何实现的

    知识点:Django框架.redis数据库 1.业务需求分析 当登录用户在浏览商品的详情页时,我们可以把详情页这件商品信息存储起来,作为该登录用户的浏览记录:用户未登录,我们不记录其商品的浏览记录. ...

  5. 使用cookie保存用户的浏览记录

    我们在写关于用户对商品额的浏览记录的时候一般使用cookie进行记录,cookie一般保存字符串比较常用,如果想保存对象可以使用序列化,这里不做过多的解释,我们现在只做简单的cookie应用,cook ...

  6. 小心!WPS正在监控你的电脑!浏览记录

    WPS是国产很好的免费办公软件,金山旗下,因为微软office是收费的,安装也不如wps简单,wps在国内用户量很大,我也好多年一直用wps. 但是最近很长时间用wps的用户应该大都会发现,电脑右底部 ...

  7. 微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享

    微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享 项目需求 1.后台统计一个用户在我们小程序的每个页面的停留时间 2,前台用户可以在个人中心看到自己的分享记录以及多少人查看 需求分析 需求一 ...

  8. 用户身份和浏览记录一览无遗,Safari最新版本被曝高危漏洞

    在苹果官网上,Safari浏览器一直以强大的隐私保护功能作为卖点.其中,智能防跟踪和隐私标签等功能满足用户需求.但在近日,浏览器指纹识别服务商FingerprintJS发布了一篇博客,经他们调查发现, ...

  9. 327、淘宝用户浏览轨迹【逛淘宝记录】的查询设计

    问题:淘宝用户浏览轨迹[逛淘宝记录]的查询设计,用MySQL存储后分库分表,怎么实现用户自己去查询个人的浏览记录. 我回答按用户id分,面试官说有问题让我再想想,我想不出来.大佬们看看用户id分会有什 ...

  10. 使用redis存储用户的浏览记录

    用户历史浏览记录:1).什么时候添加历史浏览记录:访问商品的详情页面的时候,添加历史浏览记录2).什么时候获取历史浏览记录:访问用户中心个人信息页的时候获取历史浏览记录3).历史浏览记录需要存储在哪里 ...

最新文章

  1. Python3中collections.OrderedDict介绍
  2. Android中实现整个视图切换的左右滑动效果
  3. Android中Video的三种播放方式的实现
  4. Discuz!NT 在线用户功能简介
  5. Web---JSP-EL表达式
  6. 机器学习 数据增加_【机器学习】数据降维概述
  7. 产品原型示例_原型设计模式示例
  8. hdu 5802——Windows 10
  9. 开发日志_Jan.8.2017
  10. LeetCode 158. 用 Read4 读取 N 个字符 II
  11. layui select动态赋值_layui与 VUE 配合使用时动态渲染 select 坑
  12. libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
  13. 【开源】前端拖拽表单设计器 自定义表单
  14. getParameterValues中文乱码
  15. 数字转人民币大写,PHP实现
  16. ceph分布式存储-常见 PG 故障处理
  17. 风林评《如何写影评》|如何写影评
  18. 搜狗输入法 - 自定义短语
  19. java解析宏文件,从命令行或批处理文件运行Excel宏的方法?
  20. Windows10隐藏3D对象、文档、音乐、图片、视频、下载、桌面7个文件夹

热门文章

  1. 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)
  2. tensorflow手动实现算法之二多元线性回归
  3. Ensemble Learning方法总结
  4. java 封闭类型_java – 如何获取封闭类?
  5. 线性表插入元素算法(顺序存储)
  6. vs2013 .net连接mysql_Visual Studio C#.NET 轻松连接Mysql数据库之组件mysql-connector-net-网络教程与技术 -亦是美网络...
  7. java 图片旋转裁剪_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...
  8. 计算机不显示用户组密码设置,手把手教你设置win10系统开机时跳过锁屏画面直接显示密码框登录界面-系统操作与应用 -亦是美网络...
  9. 世界第一台电脑_研发世界第一台电脑的核心人物,被美国隐瞒35年,只因他是个华人...
  10. ペイペイ mini program_小姐姐最爱的MINI,你了解吗?