go的gin和gorm框架实现切换身份的接口
使用go的gin和gorm框架实现切换身份的接口,接收前端发送的JSON对象,查询数据库并更新,返回前端信息
接收前端发来的JSON对象,包含由openid和登陆状态组成的一个string和要切换的身份码int型

后端接收后判断要切换的身份是否低于该用户身份,是则更新数据库的登录状态为要切换的身份码,返回由openid和新的登录状态组成的string,否则返回错误码和权限不足的错误信息
测试代码
创建两个结构体,一个用来查询数据库,一个用来接收前端发送的JSON对象
连接数据库,接收前端POST请求,提取数据,查库,处理,返回信息
package mainimport ("github.com/gin-gonic/gin""gorm.io/driver/mysql""gorm.io/gorm""log""net/http""strconv"
)type User struct {Openid string `json:"openid" gorm:"primaryKey"`IdCode int `json:"idcode"`LoginState int `json:"login_state"`
}
type RequestData struct {OpenidAndLoginStatus string `json:"openidAndLoginState"`IdCodeToChange int `json:"idcodeToChange"`
}func main() {dsn := "username:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {log.Fatal(err)}err = db.AutoMigrate(&User{})if err != nil {log.Fatal(err)}router := gin.Default()// 接口测试地址 192.168.160.128:8080/updaterouter.POST("/update", func(c *gin.Context) {var requestData RequestDataif err := c.ShouldBindJSON(&requestData); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON data"})return}openidAndLoginState := requestData.OpenidAndLoginStatusopenID := openidAndLoginState[:len(openidAndLoginState)-1]loginStatus, _ := strconv.Atoi(openidAndLoginState[len(openidAndLoginState)-1:])idCode := requestData.IdCodeToChangevar user Userresult := db.Where("openid = ?", openID).First(&user)if result.Error != nil {c.JSON(http.StatusOK, gin.H{"error": "Invalid openid"})return}if user.IdCode >= idCode {user.LoginState = loginStatusresult = db.Save(&user)if result.Error != nil {c.JSON(http.StatusInternalServerError, gin.H{"error": "Database save error"})return}} else {c.JSON(http.StatusOK, gin.H{"error": "Insufficient privileges"})return}response := openID + strconv.Itoa(idCode)c.JSON(http.StatusOK, gin.H{"response": response})})err = router.Run(":8080")if err != nil {return}
}
相关文章:
go的gin和gorm框架实现切换身份的接口
使用go的gin和gorm框架实现切换身份的接口,接收前端发送的JSON对象,查询数据库并更新,返回前端信息 接收前端发来的JSON对象,包含由openid和登陆状态组成的一个string和要切换的身份码int型 后端接收后判断要切换的身份是否低于该…...
仓库库存管理难点在哪?有哪些仓库库存管理软件?
仓库库存管理常见的难点有:库存数据混乱、库存成本较高、库存积压严重等问题 使用仓库管理软件,企业可以更好地管理库存、优化供应链、提高操作效率,并基于准确的数据进行决策和规划,从而解决许多仓库库存管理中的难题。 一、仓库…...
服务链路追踪
一、基础概念 1.背景 对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如: 如何串联整个调用链路,快速定位问题?如何理清各个微服务之间的依赖关系?如何进行各个微服…...
macOS - 安装使用 libvirt、virsh
文章目录 关于 libvirt使用安装启动服务virsh 交互模式virsh 帮助命令 关于 libvirt libvirt 官网: https://libvirt.org/gitlab : https://gitlab.com/libvirt/libvirtgithub : https://github.com/libvirt/libvirt 只读,gitlab 的镜像 libvirt是一套…...
Windows Server 2019设置使用照片查看器查看图片的设置方法
1、使用winR快捷键快速打开运行,输入regedit打开注册表: 2、在注册表中找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations 3、在右侧新建字符串项: 4、例如新建两项.jpg 和.png值…...
【需求输出】流程图输出
文章目录 1、什么是流程图2、绘制流程图的工具和基本要素3、流程图的分类和应用场景4、如何根据具体场景输出流程图 1、什么是流程图 2、绘制流程图的工具和基本要素 3、流程图的分类和应用场景 4、如何根据具体场景输出流程图...
opencv+ffmpeg+QOpenGLWidget开发的音视频播放器demo
前言 本篇文档的demo包含了 1.使用OpenCV对图像进行处理,对图像进行置灰,旋转,抠图,高斯模糊,中值滤波,部分区域清除置黑,背景移除,边缘检测等操作;2.单纯使用opencv播放…...
stable-diffusion-webui 的模型更新
shared.py和sd_models.py中 shared.py: options_templates.update(options_section((sd, "Stable Diffusion"), {"sd_model_checkpoint": OptionInfo(None, "Stable Diffusion checkpoint", gr.Dropdown, lambda: {"choices": list_…...
Gin模板语法
Gin模板语法 文章目录 <center> Gin模板语法前提提醒Gin框架启动服务器模板解析模板渲染遇到不同目录下相同的文件如何加载和渲染自定义函数加载静态文件 前提提醒 由于有了前面template包的基础,所以该笔记不再过多详细分析 Gin框架启动服务器 语法: r:gin.Default()/…...
Go http.Handle和http.HandleFunc的路由问题
Golang的net/http包提供了原生的http服务,其中http.Handle和http.HandleFunc是两个重要的路由函数。 1. 函数介绍 http.HandleFunc和http.Handle的函数原型如下,其中DefaultServeMux是http包提供的一个默认的路由选择器。 func HandleFunc(pattern st…...
如何使用Kali Linux进行渗透测试?
1. 渗透测试简介 渗透测试是通过模拟恶意攻击,评估系统、应用或网络的安全性的过程。Kali Linux为渗透测试人员提供了丰富的工具和资源,用于发现漏洞、弱点和安全风险。 2. 使用Kali Linux进行渗透测试的步骤 以下是使用Kali Linux进行渗透测试的基本…...
简单易用且高效的跨平台开发工具:Xojo 2023 for Mac
Xojo for Mac是Mac平台上一个跨平台的针对桌面、Web、移动和Raspberry Pi的快速应用程序开发软件。与其他多平台开发工具相比,Xojo for Mac为开发人员提供了显着的生产率提高。 Xojo for Mac具有拖放功能,使您能够快速创建用户界面设计,然后…...
HIVE SQL实现分组字符串拼接concat
在Mysql中可以通过group_concat()函数实现分组字符串拼接,在HIVE SQL中可以使用concat_ws()collect_set()/collect_list()函数实现相同的效果。 实例: abc2014B92015A82014A102015B72014B6 1.concat_wscollect_list 非去重拼接 select a ,concat_ws(-…...
【问心篇】渴望、热情和选择
加班太严重完全没有时间学习,怎么办? 我真的不算聪明的人,但是,我对学习真的是有渴望的。说得好听一点,我希望自己在不停地成长,不辜负生活在这个信息化大变革的时代。说得不好的一点,就是我从…...
【贪心】CF1841 D
Codeforces 题意: 思路: 首先模拟一下样例 并没有发现什么 那么就去考虑特殊情况,看看有没有什么启发 考虑一个大区间包含所有小区间的情形,这种情况就是在这么多区间中找出两个区间 换句话说,这么多区间组成一个…...
移动端预览指定链接的pdf文件流
场景 直接展示外部系统返回的获取文件流时出现了跨域问题: 解决办法 1. 外部系统返回的请求头中调整(但是其他系统不会给你改的) 2. 我们系统后台获取文件流并转为新的文件流提供给前端 /** 获取传入url文件流 */ GetMapping("/get…...
【Go 基础篇】Go语言字符类型:解析字符的本质与应用
介绍 字符类型是计算机编程中用于表示文本和字符的数据类型,是构建字符串的基本单位。在Go语言(Golang)中,字符类型具有独特的特点和表示方式,包括Unicode编码、字符字面值以及字符操作。本篇博客将深入探讨Go语言中的…...
Java基础(十二)面向对象编程 OOP
一、抽象数据类型 1.面向对象基本概念 1. 面向对象 面向对象程序设计(OOP)是一种基于对象概念的软件开发方法,是目前软件开发的主流方式。 常见面向对象的语言:C 、Python 、Java 常见面向过程的语言:C 面向对象的三…...
在阿里云服务器上安装Microsoft SharePoint 2016流程
本教程阿里云百科分享如何在阿里云ECS上搭建Microsoft SharePoint 2016。Microsoft SharePoint是Microsoft SharePoint Portal Server的简称。SharePoint Portal Server是一个门户站点,使得企业能够开发出智能的门户站点。 目录 背景信息 步骤一:添加…...
Ubuntu设置定时重启
1.安装/更新 cron 安装crontab sudo apt-get install cron更新命令 sudo apt-get update2.配置cron定时任务 sudo nano /etc/crontab* * * * * root reboot(从左到右,五个 * 依次是 分,时 ,天,月,星期)下列命令表示…...
从微积分到级数:一张图看懂考研数学六大章节的核心逻辑与联系
从微积分到级数:一张图看懂考研数学六大章节的核心逻辑与联系 考研数学的复习常常让人感到知识点零散、难以串联。许多考生在反复刷题后,依然无法建立起完整的知识框架。本文将通过一张思维导图,揭示从一元函数微积分到无穷级数之间的内在联系…...
告别SDK Manager卡顿:用命令行flash.sh为Jetson TX2刷入JetPack 4.6.4系统镜像
告别SDK Manager卡顿:用命令行flash.sh为Jetson TX2刷入JetPack 4.6.4系统镜像 当你在为Jetson TX2刷写系统时,是否曾被SDK Manager的图形界面折磨得焦头烂额?网络中断、进度条卡死、"The target is in a bad state"等错误提示让本…...
避坑指南:Ubuntu 20.04上VINS-Fusion环境搭建,从源码修改到手机数据实测的完整流程
Ubuntu 20.04下VINS-Fusion环境搭建全流程避坑手册 当你在Ubuntu 20.04上尝试搭建VINS-Fusion环境时,可能会遇到各种令人头疼的问题。从依赖项安装到源码修改,再到手机摄像头数据的适配,每一步都可能隐藏着意想不到的"坑"。本文将带…...
2026 年 5 月 AI 热点:大模型、硬件、人形机器人全面升级
一、大模型技术突破 | LLM Technology Breakthroughs 1.1 OpenAI GPT‑5.5 正式成为ChatGPT默认模型 | GPT‑5.5 Becomes ChatGPT Default Model 英文内容 | English On May 5, 2026, OpenAI officially rolled out GPT‑5.5 Instant as the new default model for ChatGPT, …...
Unity ShaderGraph环境搭建避坑指南:URP/HDRP渲染管线匹配
1. 为什么“环境搭建”是ShaderGraph学习路上第一个真坑 很多人点开Unity ShaderGraph教程,第一眼看到“创建Sub Graph”“连接Base Color节点”,心里一热:这不就是拖拖拽帖?比写HLSL简单多了!结果双击打开Shader Gra…...
深入nRF5340双核通信:拆解LE Audio同步背后的IPC与DPPI机制
深入拆解nRF5340双核通信:LE Audio同步背后的IPC与DPPI实战解析 当你在调试nRF5340的LE Audio应用时,是否遇到过这样的场景:网络核(NET Core)已经收到了完整的音频数据包,但应用核(APP Core)的音频处理却出现了微秒级的延迟&#…...
成都制造企业SRM和ERP数据对不上,AI协同先治理什么?
系统都上线了,为什么协同还是慢不少成都制造企业已经有ERP,也陆续上了SRM、WMS、MES或QMS。采购订单在线审批,供应商可以在SRM里报价,仓库可以扫码入库,质量部门也有检验记录。可一到真实协同,问题仍然反复…...
转行简历不会衔接?AI一键生成,自然过渡无违和感,邀约率飙升3倍!
“我以前是做销售的,想转行产品经理,简历上怎么写才能不让HR觉得我风马牛不相及?” “干了几年运营,现在想尝试开发,简历里除了写熟悉Word、Excel,还能写啥?” “裸辞转行,简历一片…...
良心盘点!2026AI写作辅助软件榜单(覆盖 99% 毕业论文需求)
本文精选13 款2026 年实测 AI 论文工具,按全流程全能型、垂直领域专精型、润色降重专家、文献管理助手四大类别排序,覆盖从选题到定稿全链路,适配本科 / 硕博 / 期刊全场景,附选型速查表与避坑指南,帮你快速找到最佳拍…...
Unity+C#开发MMO服务端的务实架构与万人连接实战
1. 先泼一盆冷水:所谓“万人同时在线”的真实含义与常见误解 很多人看到“UnityC#开发万人MMO服务器”这个标题,第一反应是:哇,这得用多牛的分布式架构?是不是要上Kubernetes集群、分库分表、消息中间件全配齐…...
