如何使用springboot项目如何实现小程序里面商品的浏览记录功能案例

ops/2025/2/21 6:42:03/

1 第一步,数据库表结构设计

DROP TABLE IF EXISTS `product_browse_history`;
CREATE TABLE `product_browse_history` (`id` bigint NOT NULL COMMENT '记录编号',`spu_id` bigint DEFAULT NULL COMMENT '商品 SPU 编号',`user_id` bigint DEFAULT NULL COMMENT '用户编号',`user_deleted` tinyint(1) DEFAULT NULL COMMENT '用户是否删除',`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='商品浏览记录';SET FOREIGN_KEY_CHECKS = 1;

第二部:在小程序里面 点击商品详情的时候 我们可以在这个浏览记录表里面新增一条数据,同一个商品只会有一条,注意这里表结构也可以新增浏览记录次数字段

这样我们可以在小程序里面通过查询接口来获取浏览记录数据啦

 @DeleteMapping(value = "/clean")@Operation(summary = "清空商品浏览记录")public CommonResult<Boolean> deleteBrowseHistory() {productBrowseHistoryService.hideUserBrowseHistory(getLoginUserId(), null);return success(Boolean.TRUE);}@GetMapping(value = "/page")@Operation(summary = "获得商品浏览记录分页")public CommonResult<PageResult<AppProductBrowseHistoryRespVO>> getBrowseHistoryPage(AppProductBrowseHistoryPageReqVO reqVO) {ProductBrowseHistoryPageReqVO pageReqVO = BeanUtils.toBean(reqVO, ProductBrowseHistoryPageReqVO.class).setUserId(getLoginUserId()).setUserDeleted(false); // 排除用户已删除的(隐藏的)PageResult<ProductBrowseHistoryDO> pageResult = productBrowseHistoryService.getBrowseHistoryPage(pageReqVO);if (CollUtil.isEmpty(pageResult.getList())) {return success(PageResult.empty());}// 得到商品 spu 信息Set<Long> spuIds = convertSet(pageResult.getList(), ProductBrowseHistoryDO::getSpuId);Map<Long, ProductSpuDO> spuMap = convertMap(productSpuService.getSpuList(spuIds), ProductSpuDO::getId);return success(BeanUtils.toBean(pageResult, AppProductBrowseHistoryRespVO.class,vo -> Optional.ofNullable(spuMap.get(vo.getSpuId())).ifPresent(spu -> vo.setSpuName(spu.getName()).setPicUrl(spu.getPicUrl()).setPrice(spu.getPrice()).setSalesCount(spu.getSalesCount()).setStock(spu.getStock()))));}


http://www.ppmy.cn/ops/160173.html

相关文章

基于微信小程序的家政服务预约系统的设计与实现(php论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和客户、员工。本系统的功能结构图如下图3.1所示&#xff1a; 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台&#xff0c;所以对信息的安全和稳定要求非常高。为了解决本问题&#xff0c;采用前端…

C++:类与对象,定义类和构造函数

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //如何让定义一个类 // 封装 // 1、将数据和方法定义到一起。 // 2、把想给你看的数据给你看&#xff0c;不想给你看的封装起来。 通过访问限定符来实现 class Stack { public: //1.成…

线性代数中的向量与向量空间

线性代数中的向量与向量空间 线性代数是数学的一个分支&#xff0c;它广泛应用于计算机科学、物理学、工程学等领域。在这些领域中&#xff0c;向量和向量空间是构建复杂系统和模型的基础。本文将深入探讨这两个核心概念。 1. 向量&#xff1a;不仅仅是箭头 在线性代数中&am…

C++蓝桥杯基础篇(四)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来学习C蓝桥杯基础篇&#xff08;四&#xff09;&#xff0c;继续练习相关习题。准备好了吗&#xff1f;咱们开始咯~ 题目1 连续整数相加 思路分析&#xff1a; 这道题&#xff0c;我们可以把从键盘中读取n写在while循…

文心一言,下一代模型开源

大家好&#xff0c;我是小悟。 百度官宣&#xff0c;将在未来几个月中陆续推出文心大模型 4.5 系列&#xff0c;并于 6 月 30 日起正式开源。 与此同时&#xff0c;百度近期发布多项 AI 开放政策&#xff0c;进一步降低大模型的使用门槛。随着文心大模型的迭代升级和成本不断…

排查生产sql查询缓慢

生产投产检验&#xff0c;发现查询客户明细的接口数据响应需要5秒以上&#xff0c;通过接口可以查询到详细的后端代码 1. 先排查后端的代码实现&#xff0c;并未出现复杂逻辑&#xff0c;那么就应该是sql的问题 2. 通过explain对sql进行解析&#xff0c;发现sql没有走索引 3.…

python脚本(一):飞书机器人实现新闻抓取与推送

根据飞书官方文档描述&#xff0c;可以在群组内增加飞书机器人来实现信息推送 自定义机器人使用指南 - 开发指南 - 开发文档 - 飞书开放平台 一、基于官方文档写一个基本文本推送的demo # feishu_notifier.py import requests import jsondef send_feishu_message(content, …

项目01--云备份

1.云备份初识 2.环境搭建--相关工具与库 若出现如下报错&#xff1a; 可尝试&#xff1a; 查看是否安装成功&#xff0c;注意安装下来的文件所在位置可能不同&#xff0c;使用时需注意 若无法用git clone连接上github网站可尝试直接在搜索引擎中登录该网站并查找bundle库&…