Spring Boot秒杀系统实现:灵活控制秒杀按钮状态

简介: Spring Boot秒杀系统实现:灵活控制秒杀按钮状态

Spring Boot秒杀系统实现:灵活控制秒杀按钮状态

在一个秒杀系统中,为了提供更好的用户体验,通常需要在秒杀活动未开始时将秒杀按钮置为灰色不可点击状态。本文将通过一个简单的示例演示如何在Spring Boot项目中实现这一功能,包括后端的控制和前端的交互。

1. 后端实现

首先,我们创建一个SeckillController,该控制器包含了获取秒杀状态和设置秒杀状态的接口:

@RestController
@RequestMapping("/seckill")
public class SeckillController {
    private boolean isSeckillOpen = false;  // 标识秒杀是否开启
    // 获取秒杀状态
    @GetMapping("/status")
    public ResponseEntity<Object> getSeckillStatus() {
        Map<String, Object> response = new HashMap<>();
        response.put("isSeckillOpen", isSeckillOpen);
        return new ResponseEntity<>(response, HttpStatus.OK);
    }
    // 设置秒杀状态
    @PostMapping("/status")
    public ResponseEntity<Object> setSeckillStatus(@RequestBody Map<String, Boolean> request) {
        isSeckillOpen = request.get("isSeckillOpen");
        Map<String, Object> response = new HashMap<>();
        response.put("success", true);
        return new ResponseEntity<>(response, HttpStatus.OK);
    }
}

2. 定时任务

创建一个SeckillScheduler定时任务类,用于模拟定时开启和关闭秒杀活动:

@Component
public class SeckillScheduler {
    @Autowired
    private SeckillController seckillController;
    @Scheduled(cron = "0 0 10 * * ?")  // 每天上午10点触发一次
    public void startSeckill() {
        seckillController.setSeckillStatus(true);
    }
    @Scheduled(cron = "0 0 12 * * ?")  // 每天中午12点触发一次
    public void stopSeckill() {
        seckillController.setSeckillStatus(false);
    }
}

3. 前端实现

使用Vue.js创建一个简单的页面,通过axios库与后端通信,并实时更新秒杀按钮的状态:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Seckill System</title>
</head>
<body>
    <button id="seckillButton" onclick="seckill()">Seckill</button>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
        // 获取秒杀状态
        function checkSeckillStatus() {
            axios.get('/seckill/status')
                .then(response => {
                    const isSeckillOpen = response.data.isSeckillOpen;
                    // 根据秒杀状态设置秒杀按钮状态
                    if (isSeckillOpen) {
                        enableSeckillButton();  // 秒杀开启,设置按钮为可点击状态
                    } else {
                        disableSeckillButton(); // 秒杀未开始,设置按钮为灰色不可点击状态
                    }
                })
                .catch(error => {
                    console.error('Error checking seckill status', error);
                });
        }
        // 设置秒杀按钮为可点击状态
        function enableSeckillButton() {
            document.getElementById('seckillButton').removeAttribute('disabled');
        }
        // 设置秒杀按钮为灰色不可点击状态
        function disableSeckillButton() {
            document.getElementById('seckillButton').setAttribute('disabled', 'true');
        }
        // 执行秒杀操作
        function seckill() {
            // 在这里添加执行秒杀的逻辑
            console.log('Seckill button clicked');
        }
        // 页面加载时检查秒杀状态
        checkSeckillStatus();
    </script>
</body>
</html>

4. 运行项目

运行Spring Boot项目,访问前端页面,你将看到秒杀按钮在秒杀未开始时被灰色禁用,当秒杀开始时变为可点击状态。通过这个简单的示例,我们演示了如何通过前后端协同工作,在秒杀活动开始前将秒杀按钮置为灰色不可点击状态,提供更好的用户体验。这是一个基础实现,你可以根据实际需求进行扩展和优化。

相关文章
|
5天前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
315 6
|
5天前
|
人工智能 JavaScript 前端开发
毕业设计|基于Spring Boot和Vue.js的前后端分离商城系统(二)
毕业设计|基于Spring Boot和Vue.js的前后端分离商城系统
|
5天前
|
前端开发 Java 数据库
洋酒销售系统|基于Spring实现洋酒销售管理平台【论文文档+开题+PPT+讲解视频】
洋酒销售系统|基于Spring实现洋酒销售管理平台【论文文档+开题+PPT+讲解视频】
|
5天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
107 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
5天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
36 0
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
5天前
|
消息中间件 缓存 运维
java+saas模式医院云HIS系统源码Java+Spring+MySQL + MyCat融合BS版电子病历系统,支持电子病历四级
云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一系列常规功能,还能与公卫、PACS等各类外部系统融合,实现多层机构之间的融合管理。
53 1
|
5天前
|
Java 数据库 数据安全/隐私保护
基于Spring Boot的在线考试系统
基于Spring Boot的在线考试系统
|
5天前
|
JavaScript Java 数据库连接
Spring Boot 2.0+Mybatis+Vue的轻量级后台管理系统
Spring Boot 2.0+Mybatis+Vue的轻量级后台管理系统
|
5天前
|
IDE Java 应用服务中间件
基于Spring+mybatis的SSM超市消费积分管理系统代码实现含演示站
这是一个SSM超市消费积分管理系统。有2个角色:买家角色和管理员角色,现在开始分角色介绍下功能。买家角色核心功能有买家登录,查看网站首页,查看蔬菜详情,加入购物车,提交订单,查看我的订单。管理员角色核心功能有管理员登录,用户管理,管理员管理,商品管理,一级分类管理,二级分类管理,订单管理。更多的功能可以去演示站查看。
基于Spring+mybatis的SSM超市消费积分管理系统代码实现含演示站
|
5天前
|
存储 NoSQL 关系型数据库
轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】
轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】
79 0