当前位置: 首页 > news >正文

电商项目-秒杀系统(四)秒杀异步下单防止重复秒杀

一、 防止恶意刷单解决

在生产场景下,可能会有一些人会恶意访问当前网站,来进行恶意的刷单。这样会造成当前系统出现一些业务上的业务混乱,出现脏数据,或者造成后端访问压力大等问题。

一般要解决这个问题的话,前端可以进行控制,如点一次立即抢购后,置灰立即抢购按钮。同时对于后端来说也需要进行控制。后端实现可以通过Redis incrde 原子性递增来进行解决。

实现思路:
获取登录人名称和商品ID,自定义RedisKey,用户第一次访问放行,并对当前Key设置一个5分钟的有效期,用户在 5分钟内不能重复访问。

步骤一: 更新秒杀服务下单方法
更新秒杀服务下单方法,防止恶意刷单。

步骤二: 防重方法实现

//防止重复提交
private String preventRepeatCommit(String username,Long id) {String redisKey = "seckill_user_" + username+"_id_"+id;
    long count = redisTemplate.opsForValue().increment(redisKey, 1);
    if (count == 1){
        //设置有效期五分钟
        redisTemplate.expire(redisKey, 5, TimeUnit.MINUTES);
        return "success";
    }if (count>1){
        return "fail";
    }return "fail";}

二、 防止相同商品重复秒杀

防止同一个人,对于相同商品的重复秒杀。项目的需求是:同一个人对于相同的商品只能买一次。并且每次只能买一个。

实现思路:

当用户购买完商品之后,会在秒杀订单表中产生一条记录,这条记录里包含当前购买的商品ID,以及当前的用户名称。现在明确了每一个
订单中都有这两个信息的话,我们需要完成防止同一个人对于同一个商品的重复秒杀。只需要根据秒杀ID和秒杀商品ID来查询秒杀订单表
,如果里面有相关数据的话,代表用户下过单,就不让用户下单了,如果没有的话再来完成下单流程。

步骤一: 修改下单业务层实现
判断用户是否已经购买过该商品。

步骤二: dao层新增查询方法

public interface SeckillOrderMapper extends Mapper<SeckillOrder> {/**
     * 查询秒杀订单信息
     * @param username
     * @param id
     * @return
     */
    @Select("select * from tb_seckill_order where user_id=#{username} and seckill_id=#{id}")
    SeckillOrder getSecKillOrderByUserNameAndGoodsId(String username, Long id);
}

相关文章:

  • 快速理清 Attention 注意力和 Encoder, Decoder 概念
  • .NET CAD 二次开发中的 Transform 与数学矩阵详解
  • 开源网站模板 html静态网页模板
  • 2021 年 6 月青少年软编等考 C 语言六级真题解析
  • mysql下载
  • 【算法day3】寻找两个正序数组的中位数
  • RK3588 安装ffmpeg6.1.2
  • 数据守护者:备份文件的重要性与自动化实践策略
  • CLIP模型使用方法
  • MapReduce技术概述**
  • java的jiraapi设置超时时间
  • Excel·VBA江西省预算一体化工资表一键处理
  • 【LeetCode 热题 100】11. 盛最多水的容器 | python 【中等】
  • Unity Shader编程】之基础纹理
  • Mac 上如何安装Mysql? 如何配置 Mysql?以及如何开启并使用MySQL
  • MySQL:CRUD(增删查改)
  • 鸿蒙Next-应用检测、安装以及企业内部商店的实现
  • 日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(19):(1)家族の呼び方(よびかた):家族人物(2)助词练习
  • FreeRTOS任务状态查询
  • 数据库原理5
  • 我国网络营销方式/官网关键词优化价格
  • 无锡网站公司哪家好/百度推广登录网址
  • 不关闭网站备案/百度一下网页搜索
  • 没被屏蔽的国外新闻网站/网址大全名称
  • 铜城建设集团网站/短视频seo公司
  • 专门做免费东西试吃的网站/网页设计制作教程