点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定(升级版)
文章目录
- 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 点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定:https://blog.csdn.net/m0_65152767/article/details…...
UniApp 性能优化策略
一、引言 在当今数字化时代,移动应用的性能成为影响用户留存与满意度的关键因素。UniApp 作为一款热门的跨平台开发框架,以一套代码适配多端的特性极大提升了开发效率,但同时也面临着性能优化的挑战。优化 UniApp 性能,不仅能够让…...
【Linux报告】实训六 重置超级用户密码
实训六 重置超级用户密码 2018编写-今日公布 【练习一】忘记root密码 步骤一:开启或重启系统,并且要在五秒之内按任何键; 步骤二:按任意键,停止进入系统,按【e】键,跳转新页面,再…...
smolagents:一个用于构建代理的简单库
HF推出 smolagents,一个非常简单的库,它能够解锁语言模型的代理功能。以下是它的简要介绍: 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.确定目标与需求:首先,明确打造手机矩阵的目的和需求,是为了进行电商运营、自媒体推广、任务管理还是其他目的。这将决定后续的手机数量、操作系统选择以及应用安装等。 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
在开源领域,选择合适的开源协议是开发者和企业能否充分利用平台的关键。ThingsPanel,作为一个专注于物联网的开源平台,近日将协议从 AGPLv3 改为更开放的 Apache 2.0。这一改变对开发者和用户意味着什么? 为什么协议要从 AGPLv3 转…...
鸿蒙开发:文本合成语音
前言 Android开发的同学都知道,在Android当中,实现一段文字合成语音播放,可以使用系统提供的对象TextToSpeech来很快的实现,如果不用系统自带的,也可以使用三方提供的,比如讯飞的语音合成等等,总…...
雷军:科技传奇的逐梦之旅
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...
LeetCode - 初级算法 数组(删除排序数组中的重复项)
免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 删除排序数组中的重复项 这篇文章讨论如何从一个非严格递增的数组 nums 中删除重复的元素,使每个元素只出现一次,并返回新数组的长度。因为数组是排序的,只要是相同的肯定是挨着的,所以我们需要遍历所有数组,然…...
2024年度培训运维总结
目前带的弟子跟我实战训练运维的总就业率基本可以稳定在 100% 左右(因为我不带小白和没学历和大龄,悟性低都筛掉了还能找我说明条件够了) 以下是弟子私教训练营的最新就业数据(2024年12月25日): 面试辅导…...
java重装小结
一、Java安装 安装路径 https://www.oracle.com/java/technologies/javase/javas e8-archive-downloads.html 具体类型可参考: Java安装配置-CSDN博客 我在这一步主要碰到的问题就是访问官网报404错误,可参考: 在oracle官网下载资源显示…...
ubuntu20.04 中文输入法安装
中文输入法安装指南 在 Ubuntu 20.04 上安装中文输入法,您可以按照以下步骤操作: 打开终端。安装 fcitx 输入法框架和中文输入法模块:sudo apt update sudo apt install fcitx fcitx-pinyin安装中文语言支持: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 模型中的相对湿度。 了解相对湿度 大气是干燥空气和水蒸气的混合物,每一种的压力之和等于蒸气压。相对湿度是指空气中的水分量与空气在特定温度下可以容纳的最大水分量之比。它通常以百分比表示。它的范围从 0(干燥空气)到…...
uniapp-vue3(下)
关联链接:uniapp-vue3(上) 文章目录 七、咸虾米壁纸项目实战7.1.咸虾米壁纸项目概述7.2.项目初始化公共目录和设计稿尺寸测量工具7.3.banner海报swiper轮播器7.4.使用swiper的纵向轮播做公告区域7.5.每日推荐滑动scroll-view布局7.6.组件具名…...
一起学习Firtran: Fortran中的流程控制与操作符
流程控制语句 在计算机编程中,控制程序流程是算法设计中的一个核心概念,它使得程序能够根据特定条件执行不同的操作或重复执行某段代码。这显著增强了计算机算法相对于简单数学公式的功能和灵活性。 if语句 在单个 if 语句中只有当测试表达式࿰…...
Sonic:开源Go语言开发的高性能博客平台
Sonic:一个用Go语言开发的高性能博客平台 简介 Sonic,一个以其速度如声速般快速而命名的博客平台,是一个用Go语言开发的高性能博客系统。正如其名字所暗示的,Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…...
ChilloutMix模型实战:从零部署到高效生成AI图像
ChilloutMix模型实战:从零部署到高效生成AI图像 【免费下载链接】chilloutmix_NiPrunedFp32Fix 项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix ChilloutMix是一个基于Stable Diffusion架构的AI图像生成模型ÿ…...
RexUniNLU新手必看:从模型下载到API服务部署完整流程
RexUniNLU新手必看:从模型下载到API服务部署完整流程 1. 引言:为什么选择RexUniNLU? RexUniNLU是一款基于Siamese-UIE架构的轻量级自然语言理解框架,它最大的特点是支持零样本学习——这意味着你不需要准备任何标注数据…...
【QuantDev必藏】:为什么92%的C++交易系统仍在用malloc——深度剖析jemalloc/tcmalloc/mimalloc在L3缓存穿透场景下的失效临界点
第一章:金融高频交易系统内存分配的底层挑战与现实困境在纳秒级竞争的金融高频交易(HFT)场景中,内存分配不再是语言运行时的“黑盒服务”,而是决定订单延迟、吞吐一致性与系统可预测性的关键路径。传统堆分配器&#x…...
5分钟搞定:造相-Z-Image-Turbo亚洲美女LoRA服务搭建与测试
5分钟搞定:造相-Z-Image-Turbo亚洲美女LoRA服务搭建与测试 1. 项目概述 造相-Z-Image-Turbo亚洲美女LoRA是一个基于Z-Image-Turbo模型的图片生成Web服务,特别集成了laonansheng开发的Asian-beauty-Z-Image-Turbo-Tongyi-MAI-v1.0 LoRA模型,…...
避开这3个坑,你的火山引擎SFT微调效果才能翻倍
火山引擎SFT微调实战:避开3个关键陷阱让模型效果倍增 在火山方舟平台上进行大模型监督微调(SFT)时,许多开发者都会遇到一个共同的困惑:明明按照官方文档一步步操作,为什么最终效果总是不尽如人意࿱…...
claude-code 深度解析:它为什么走红,以及值不值得开发者投入经理
# 从工具到方法论:claude-code 为什么值得开发者认真评估> 今日新增 ⭐ 10749 Stars | 总计 ⭐ 102012 Stars | 仓库:anthropics/claude-code## 一句话定位从命名和描述看,这不是单点功能脚本,而更像围绕 agent 工作流组织的开…...
SeqGPT-560M入门指南:Web界面操作+Jupyter调试+API调用三路径并行
SeqGPT-560M入门指南:Web界面操作Jupyter调试API调用三路径并行 1. 从零开始:认识SeqGPT-560M 如果你正在寻找一个开箱即用、能快速处理中文文本分类和信息抽取的AI工具,那么SeqGPT-560M绝对值得你花十分钟了解一下。 简单来说,…...
Slim模板在微服务架构中的终极应用指南:分布式系统模板管理最佳实践
Slim模板在微服务架构中的终极应用指南:分布式系统模板管理最佳实践 【免费下载链接】slim Slim is a template language whose goal is to reduce the syntax to the essential parts without becoming cryptic. 项目地址: https://gitcode.com/gh_mirrors/sli/s…...
如何使用Firebase构建Aurelia 1框架实时协作应用:打造高效协同编辑工具
如何使用Firebase构建Aurelia 1框架实时协作应用:打造高效协同编辑工具 【免费下载链接】framework The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia. 项目地址: https://gitcode.com/gh_mirrors/fra/framework…...
新手如何快速掌握多层板设计?从电源PCB叠层结构讲起
引言:从双板板到多层板,你准备好了吗?作为一名硬件工程师,你是否也经历过这样的困惑:刚学会画双板板,项目需求就变成了4层、6层甚至8层板?面对叠层结构的选择,你是否感到无从下手&am…...
