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

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定(升级版)

文章目录

  • 1、updateInviteCodeStatus
  • 2、handleLock
  • 3、InviteCodeController
  • 4、InviteCodeService
  • 5、CrudRepository

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定:https://blog.csdn.net/m0_65152767/article/details/144810693

这篇博客中的内容,有一个bug,那就是我刷新页面,解锁按钮还是会变成锁定按钮,最后检查发现锁定按钮有一个字段是和后端关联的,我没有更新后端这个字段的值,所以也就造成我们只是临时的更改锁定按钮的状态,并没有持久化更改。


1、updateInviteCodeStatus

// 修改接口参数类型
export const updateInviteCodeStatus = (data: {inviteCodeId: number;statusName: string;isLocked: number; // 新增 isLocked 字段}) =>request({url: '/api/invite-codes/updateStatus',method: 'put',params: data, // params 中包含 isLocked 参数});

2、handleLock

  private async handleLock(row: any) {const newIsLocked = row.isLocked === 0 ? 1 : 0const newStatus = newIsLocked === 0? InviteCodeStatus.EFFECTIVE.name: InviteCodeStatus.LOCKED.namethis.$confirm(`确定要${row.isLocked === 0 ? '锁定' : '解锁'}该邀请码吗?`,'提示',{confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(async() => {try {console.log('请求参数:', {inviteCodeId: row.id,statusName: newStatus,isLocked: newIsLocked, // 添加 isLocked 参数})// 调用后端的更新状态接口const response = await updateInviteCodeStatus({inviteCodeId: row.id,statusName: newStatus,isLocked: newIsLocked, // 添加 isLocked 参数})console.log('response.data:', response.data)console.log('typeof response.data', typeof response.data)if (response && response.data && typeof response.data === 'object' && 'status' in response.data) {const status = response.data.statusconst isLocked = response.data.isLocked// 调试步骤 1:打印状态值console.log('状态值:', status)console.log('后端返回的isLocked值:',isLocked)// 调试步骤 2:检查状态映射let statusObjtry {statusObj = InviteCodeStatus.fromValue(status)console.log('映射后的状态:', statusObj)} catch (e) {console.error('状态映射错误:', e)this.$message.error('状态映射错误,请联系管理员')return}// 更新本地数据const index = this.tableData.findIndex(item => item.id === row.id)if (index !== -1) {this.$set(this.tableData, index, {...this.tableData[index],// isLocked: newIsLocked,status: status, // 使用后端返回的 status 值isLocked: isLocked, // 使用后端返回的isLocked})console.log('更新后的行数据:', this.tableData[index])}this.$message.success(`${newIsLocked === 0 ? '解锁' : '锁定'}成功`)// 选择性地重新拉取数据,根据实际需求// await this.fetchInviteCodeList();} else {this.$message.error('更新失败')}} catch (error) {console.error('更新邀请码状态失败:', error)console.error('错误详情:', error.response || error.message)this.$message.error('更新邀请码状态失败:未知错误')}}).catch(() => { })}

3、InviteCodeController

    @PutMapping("/updateStatus")public BaseResult updateInviteCodeStatus(@RequestParam Integer inviteCodeId,@RequestParam String statusName,@RequestParam Integer isLocked) {  // 添加 isLocked 参数try {// 获取 InviteCodeStatus 枚举值InviteCodeStatus status = InviteCodeStatus.fromName(statusName);// 调用service层更新状态的方法inviteCodeService.updateInviteCodeStatus(inviteCodeId, status.getValue(),isLocked);// 更新 isLocked// 获取更新后的邀请码数据Optional<InviteCode>  updatedInviteCodeOptional = inviteCodeService.getInviteCodeById(inviteCodeId);if(updatedInviteCodeOptional.isPresent()){InviteCode updatedInviteCode =  updatedInviteCodeOptional.get();// 构建返回数据Map<String,Object> data = new HashMap<>();data.put("status", updatedInviteCode.getStatus());data.put("isLocked", updatedInviteCode.getIsLocked()); // 添加 isLocked 字段return BaseResult.success("状态更新成功",data);}else {return BaseResult.success("状态更新成功");}} catch (IllegalArgumentException e) {return BaseResult.failure(BaseResult.PARAMETER_ERROR, e.getMessage());} catch (Exception e) {e.printStackTrace();return BaseResult.failure(500, "服务器内部错误" + e.getMessage());}}

4、InviteCodeService

    @Transactionalpublic void updateInviteCodeStatus(Integer inviteCodeId, Integer status, Integer isLocked) {Optional<InviteCode> inviteCodeOptional = inviteCodeRepository.findById(inviteCodeId);if (inviteCodeOptional.isPresent()) {InviteCode inviteCode = inviteCodeOptional.get();inviteCode.setStatus(status);inviteCode.setLastModifiedDate(LocalDateTime.now());// 更新最后修改时间inviteCode.setIsLocked(isLocked);inviteCodeRepository.save(inviteCode);} else {throw new IllegalArgumentException("Invalid inviteCode ID: " + inviteCodeId);}}public Optional<InviteCode> getInviteCodeById(Integer inviteCodeId) {return inviteCodeRepository.findById(inviteCodeId);}

5、CrudRepository

public interface CrudRepository<T, ID> extends Repository<T, ID> {Optional<T> findById(ID var1);<S extends T> S save(S var1);
}

在这里插入图片描述

相关文章:

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定(升级版)

文章目录 1、updateInviteCodeStatus2、handleLock3、InviteCodeController4、InviteCodeService5、CrudRepository 点击锁定按钮&#xff0c;锁定按钮要变成解锁按钮&#xff0c;然后状态要从待绑定变成 已锁定&#xff1a;https://blog.csdn.net/m0_65152767/article/details…...

UniApp 性能优化策略

一、引言 在当今数字化时代&#xff0c;移动应用的性能成为影响用户留存与满意度的关键因素。UniApp 作为一款热门的跨平台开发框架&#xff0c;以一套代码适配多端的特性极大提升了开发效率&#xff0c;但同时也面临着性能优化的挑战。优化 UniApp 性能&#xff0c;不仅能够让…...

【Linux报告】实训六 重置超级用户密码

实训六 重置超级用户密码 2018编写-今日公布 【练习一】忘记root密码 步骤一&#xff1a;开启或重启系统&#xff0c;并且要在五秒之内按任何键&#xff1b; 步骤二&#xff1a;按任意键&#xff0c;停止进入系统&#xff0c;按【e】键&#xff0c;跳转新页面&#xff0c;再…...

smolagents:一个用于构建代理的简单库

HF推出 smolagents&#xff0c;一个非常简单的库&#xff0c;它能够解锁语言模型的代理功能。以下是它的简要介绍&#xff1a; from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModelagent CodeAgent(tools[DuckDuckGoSearchTool()], modelHfApiModel())agent…...

通过Dockerfile来实现项目可以指定读取不同环境的yml包

通过Dockerfile来实现项目可以指定读取不同环境的yml包 1. 挂载目录2. DockerFile3. 运行脚本deploy.sh4. 运行查看日志进入容器 5. 接口测试修改application-dev.yml 6. 优化Dockerfile7. 部分参数解释8. 优化不同环境下的日志也不同调整 Dockerfile修改部署脚本 deploy.sh重新…...

云手机 —— 手机矩阵的 “超级外挂

如何打造手机矩阵 打造手机矩阵主要包括以下几个步骤: 1.确定目标与需求:首先&#xff0c;明确打造手机矩阵的目的和需求&#xff0c;是为了进行电商运营、自媒体推广、任务管理还是其他目的。这将决定后续的手机数量、操作系统选择以及应用安装等。 2.选择手机与操作系统:根据…...

OpenCV的TickMeter计时类

OpenCV的TickMeter计时类 1. TickMeter是一个计时的类1.1 计算耗时1.2 计算循环的平均耗时和FPS1.3 function 2. 案例 1. TickMeter是一个计时的类 https://docs.opencv.org/4.x/d9/d6f/classcv_1_1TickMeter.html#details 1.1 计算耗时 TickMeter tm;tm.start();// do some…...

蓝桥杯JAVA刷题--001

文章目录 题目需求2.代码3.总结 题目需求 2.代码 class Solution {public String convertDateToBinary(String date) {if (date null || date.length() ! 10 || date.charAt(4) ! - || date.charAt(7) ! -) {throw new IllegalArgumentException("输入的日期格式不正确&…...

免费又开源:企业级物联网平台的新选择 ThingsPanel

在开源领域&#xff0c;选择合适的开源协议是开发者和企业能否充分利用平台的关键。ThingsPanel&#xff0c;作为一个专注于物联网的开源平台&#xff0c;近日将协议从 AGPLv3 改为更开放的 Apache 2.0。这一改变对开发者和用户意味着什么&#xff1f; 为什么协议要从 AGPLv3 转…...

鸿蒙开发:文本合成语音

前言 Android开发的同学都知道&#xff0c;在Android当中&#xff0c;实现一段文字合成语音播放&#xff0c;可以使用系统提供的对象TextToSpeech来很快的实现&#xff0c;如果不用系统自带的&#xff0c;也可以使用三方提供的&#xff0c;比如讯飞的语音合成等等&#xff0c;总…...

雷军:科技传奇的逐梦之旅

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、Java 与 Python 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在未来…...

LeetCode - 初级算法 数组(删除排序数组中的重复项)

免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 删除排序数组中的重复项 这篇文章讨论如何从一个非严格递增的数组 nums 中删除重复的元素,使每个元素只出现一次,并返回新数组的长度。因为数组是排序的,只要是相同的肯定是挨着的,所以我们需要遍历所有数组,然…...

2024年度培训运维总结

目前带的弟子跟我实战训练运维的总就业率基本可以稳定在 100% 左右&#xff08;因为我不带小白和没学历和大龄&#xff0c;悟性低都筛掉了还能找我说明条件够了&#xff09; 以下是弟子私教训练营的最新就业数据&#xff08;2024年12月25日&#xff09;&#xff1a; 面试辅导…...

java重装小结

一、Java安装 安装路径 https://www.oracle.com/java/technologies/javase/javas e8-archive-downloads.html 具体类型可参考&#xff1a; Java安装配置-CSDN博客 我在这一步主要碰到的问题就是访问官网报404错误&#xff0c;可参考&#xff1a; 在oracle官网下载资源显示…...

ubuntu20.04 中文输入法安装

中文输入法安装指南 在 Ubuntu 20.04 上安装中文输入法&#xff0c;您可以按照以下步骤操作&#xff1a; 打开终端。安装 fcitx 输入法框架和中文输入法模块&#xff1a;sudo apt update sudo apt install fcitx fcitx-pinyin安装中文语言支持&#xff1a;sudo apt install l…...

SQL常用语句(基础)大全

SQL语句的类型 1.DDL 1.库2.表 2.DML 1.插入数据 insert inot2.删除数据 delete / truncate3.修改数据 update set 3.DQL 1.无条件查询2.查询 什么开始 到什么结束3.指定条件查询 1.单个条件 ro in2.多个条件 and4.查询不为NULL值 is not null ,为NULL值 is null5.模糊查询 li…...

计算和可视化相对湿度结果

了解如何确定 CFD 模型中的相对湿度。 了解相对湿度 大气是干燥空气和水蒸气的混合物&#xff0c;每一种的压力之和等于蒸气压。相对湿度是指空气中的水分量与空气在特定温度下可以容纳的最大水分量之比。它通常以百分比表示。它的范围从 0&#xff08;干燥空气&#xff09;到…...

uniapp-vue3(下)

关联链接&#xff1a;uniapp-vue3&#xff08;上&#xff09; 文章目录 七、咸虾米壁纸项目实战7.1.咸虾米壁纸项目概述7.2.项目初始化公共目录和设计稿尺寸测量工具7.3.banner海报swiper轮播器7.4.使用swiper的纵向轮播做公告区域7.5.每日推荐滑动scroll-view布局7.6.组件具名…...

一起学习Firtran: Fortran中的流程控制与操作符

流程控制语句 在计算机编程中&#xff0c;控制程序流程是算法设计中的一个核心概念&#xff0c;它使得程序能够根据特定条件执行不同的操作或重复执行某段代码。这显著增强了计算机算法相对于简单数学公式的功能和灵活性。 if语句 在单个 if 语句中只有当测试表达式&#xff0…...

Sonic:开源Go语言开发的高性能博客平台

Sonic&#xff1a;一个用Go语言开发的高性能博客平台 简介 Sonic&#xff0c;一个以其速度如声速般快速而命名的博客平台&#xff0c;是一个用Go语言开发的高性能博客系统。正如其名字所暗示的&#xff0c;Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…...

SpringBoot教程(十四) SpringBoot之集成Redis

SpringBoot教程&#xff08;十四&#xff09; | SpringBoot之集成Redis 一、Redis集成简介二、集成步骤 2.1 添加依赖2.2 添加配置2.3 项目中使用之简单使用 &#xff08;举例讲解&#xff09;2.4 项目中使用之工具类封装 &#xff08;正式用这个&#xff09;2.5 序列化 &…...

RSI和CCI指标组合:如何评估需求供应区?昂首资本实战指南

在市场分析中&#xff0c;分笔成交点数量提供了一个有价值的视角&#xff0c;帮助我们识别需求和供应区。通过这些数据&#xff0c;我们可以假设供需区域的参数与主要振荡器中的区域参数类似。以RSI和CCI为例&#xff0c;这些指标不仅能够反映市场的超买和超卖情况&#xff0c;…...

PTPVT 插值说明

文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式&#xff1a; 位置-时间路径插值算法。 PVT模…...

Spring MVC和servlet

1.Spring MVC是Spring框架的一个扩展 2.Spring MVC工作流程 1、用户发送请求至前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)&#xff0c;生成处理器对象及…...

java下载文件流,不生成中间文件。

java下载文件流&#xff0c;不生成中间文件。 代码设计&#xff1a;代码实现 代码设计&#xff1a; 从前端获取的数据经过后端加工后&#xff0c;生成文件流&#xff0c;并返回前端&#xff0c;&#xff08;不生成中间文件&#xff0c;注意内存&#xff0c;记得关闭流&#xf…...

计算机专业考研 408 学科学习方法

计算机专业考研 408 学科涵盖数据结构、计算机组成原理、操作系统和计算机网络四门核心课程&#xff0c;内容多且难度大。但只要掌握科学的学习方法&#xff0c;便能化繁为简&#xff0c;稳步提升。以下为大家详细介绍 408 学科的学习方法。 一、基础夯实阶段&#xff1a;全面…...

mapper文件的解释

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.ruoyi.system.mapper.Jianai…...

常见协议的高危软件漏洞信息

HTTP 协议 协议 | 软件 | 漏洞编号 | 漏洞描述 Apache Log4j CVE-2021-45105 | Apache Log4j拒绝服务攻击漏洞 XWiki Platform CVE-2023-26477 | XWiki Platform存在安全漏洞&#xff0c;该漏洞源于可以通过URL请求参数结合其他参数注入任意脚本宏 Microsoft Windows CVE-20…...

Mediatek Android13 ROM定制

目录 1、系统签名 2、默认关闭WIFI 3、默认关闭Bluetooth 4、默认关闭NFC 5、移除物理键盘支持 6、禁止 ANR、崩溃等的对话框显示 7、修改默认壁纸 8、取消USB PTP MTP MIDI等支持 9、设置Screen Lock默认为None 10、设置Data&time自动 11、设置特定时区 12、设…...

RedisInsight:企业级 Redis 管理与分析工具

1 介绍 RedisInsight 是一款专为企业级用户设计的 Redis 管理与分析工具,旨在简化 Redis 数据库的管理和优化操作。通过直观的图形化界面和强大的功能集,RedisInsight 提供了全面的监控、诊断、性能优化以及数据管理能力,帮助企业和开发团队更高效地管理和运维 Redis 实例。…...